Package org.forgerock.openig.heap
Class HeapImpl
- java.lang.Object
-
- org.forgerock.openig.heap.HeapImpl
-
- All Implemented Interfaces:
Heap
- Direct Known Subclasses:
EnvironmentHeap
public class HeapImpl extends Object implements Heap
The concrete implementation of a heap. Provides methods to initialize and destroy a heap. A Heap can be part of a heap hierarchy: if the queried object is not found locally, and if it has a parent, the parent will be queried (and this, recursively until there is no parent anymore).
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddDefaultDeclaration(org.forgerock.json.JsonValue object)Add a default JsonValue object declaration in this heap.voiddestroy()Destroys the objects on the heap and dereferences all associated objects.<T> Tget(String name, Class<T> type)Returns an object from the heap with a specified name, ornullif no such object exists.<T> List<T>getAll(Class<T> type)Returns all objects from the heap or its parent (if any), with the specified type or an empty list if no such object exists.org.forgerock.http.HandlergetHandler()Returns theHandlerobject referenced by the handler top-level attribute.BindingsgetProperties()Returns the properties from this heap and its parents if any.voidinit(org.forgerock.json.JsonValue config, String... reservedFieldNames)Initializes the heap using the given configuration.voidput(String name, Object object)Puts an object into the heap.<T> Tresolve(org.forgerock.json.JsonValue reference, Class<T> type)Resolves a mandatory object with the specified reference.<T> Tresolve(org.forgerock.json.JsonValue reference, Class<T> type, boolean optional)Resolves an object with the specified reference, optionally or not.
-
-
-
Constructor Detail
-
HeapImpl
public HeapImpl(Name name)
Builds a root heap (will be referenced by children but has no parent itself).- Parameters:
name- local name of this heap
-
-
Method Detail
-
init
public void init(org.forgerock.json.JsonValue config, String... reservedFieldNames) throws HeapExceptionInitializes the heap using the given configuration. Once complete, all heaplets will be loaded and all associated objects are allocated using each heaplet instance's configuration.- Parameters:
config- the configuration root.reservedFieldNames- the names of reserved top level fields in the config which should not be parsed as global decorators.- Throws:
HeapException- if an exception occurs allocating heaplets.org.forgerock.json.JsonValueException- if the configuration object is malformed.
-
addDefaultDeclaration
public void addDefaultDeclaration(org.forgerock.json.JsonValue object)
Add a default JsonValue object declaration in this heap. This method should only be called prior toinit(JsonValue, String...): values provided after init() has been called will be ignored. Notice that if the caller add 2 declarations with the same name, that will ends up with an exception thrown when heap will be initialized.- Parameters:
object- Object declaration (has to contains a name attribute)
-
getAll
public <T> List<T> getAll(Class<T> type) throws HeapException
Description copied from interface:HeapReturns all objects from the heap or its parent (if any), with the specified type or an empty list if no such object exists. Existing objects in the heap are not overridden by its parents if such exist.- Specified by:
getAllin interfaceHeap- Type Parameters:
T- expected type of the heap object- Parameters:
type- expected type to search for in the heap or its parent (if any).- Returns:
- the requested object from the heap, or from its parent (if any), or an empty list if no such object exists.
- Throws:
HeapException- if an exception occurred during the creation of a heap object or any of its dependencies.
-
get
public <T> T get(String name, Class<T> type) throws HeapException
Description copied from interface:HeapReturns an object from the heap with a specified name, ornullif no such object exists.- Specified by:
getin interfaceHeap- Type Parameters:
T- expected type of the heap object- Parameters:
name- the name of the object in the heap to be retrieved.type- expected type of the heap object- Returns:
- the requested object from the heap, or
nullif no such object exists. - Throws:
HeapException- if an exception occurred during creation of the heap object or any of its dependencies.
-
resolve
public <T> T resolve(org.forgerock.json.JsonValue reference, Class<T> type) throws HeapExceptionDescription copied from interface:HeapResolves a mandatory object with the specified reference. If the object does not exist or the inline declaration cannot be build, aJsonValueExceptionis thrown. If the reference is an inline object declaration, an anonymous object is added to the heap and returned.Equivalent to:
heap.resolve(reference, type, false);- Specified by:
resolvein interfaceHeap- Type Parameters:
T- expected instance type- Parameters:
reference- a JSON value containing the name of the heap object to retrieve.type- the expected type of the heap object.- Returns:
- the specified heap object.
- Throws:
HeapException- if there was an exception creating the heap object or any of its dependencies.
-
resolve
public <T> T resolve(org.forgerock.json.JsonValue reference, Class<T> type, boolean optional) throws HeapExceptionDescription copied from interface:HeapResolves an object with the specified reference, optionally or not. If the reference is an inline object declaration, an anonymous object is added to the heap and returned. If the inline declaration cannot be build, aJsonValueExceptionis thrown.- Specified by:
resolvein interfaceHeap- Type Parameters:
T- expected instance type- Parameters:
reference- a JSON value containing either the name of the heap object to retrieve or an inline declaration.type- the expected type of the heap object.optional- Accept or not a JsonValue that contains null.- Returns:
- the referenced heap object or
nullif name containsnull. - Throws:
HeapException- if there was an exception creating the heap object or any of its dependencies.
-
put
public void put(String name, Object object)
Puts an object into the heap. If an object already exists in the heap with the specified name, it is overwritten.- Parameters:
name- name of the object to be put into the heap.object- the object to be put into the heap.
-
destroy
public void destroy()
Destroys the objects on the heap and dereferences all associated objects. This method calls the heapletdestroymethod for each object in the heap to provide a chance for system resources to be freed.
-
getHandler
public org.forgerock.http.Handler getHandler() throws HeapExceptionReturns theHandlerobject referenced by the handler top-level attribute. The returned object is fully decorated (including top-level reference decorations).- Returns:
- the
Handlerobject referenced by the handler top-level attribute - Throws:
HeapException- if object resolution failed
-
getProperties
public Bindings getProperties()
Description copied from interface:HeapReturns the properties from this heap and its parents if any.- Specified by:
getPropertiesin interfaceHeap- Returns:
- the properties from this heap and its parents if any.
-
-