Package org.oddjob.arooa.registry
Class SimpleBeanRegistry
java.lang.Object
org.oddjob.arooa.registry.SimpleBeanRegistry
- All Implemented Interfaces:
BeanDirectory,BeanRegistry
- Direct Known Subclasses:
LinkedBeanRegistry
Register components by id and look them up by path. A ComponentRegistry is a
hierarchy with child registery. The path identifies in the hierarchy where
the component resides.
This class is thread safe. Beans may be registered and retrieved by different threads.
- Author:
- Rob Gordon.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for a local registry.SimpleBeanRegistry(PropertyAccessor propertyAccessor, ArooaConverter converter) -
Method Summary
Modifier and TypeMethodDescription<T> Iterable<T> getAllByType(Class<T> type) Get all objects in the directory of the required type.Provide all the Ids in the directory.Find the id for the given component.Get the value which is either a bean or the property of a bean.<T> TGet a value, as above, but also convert it into to given type.voidRegister an object.voidRemove a component from the registry if it exists.toString()
-
Field Details
-
RESERVED_CHARACTERS
- See Also:
-
-
Constructor Details
-
SimpleBeanRegistry
public SimpleBeanRegistry()Constructor for a local registry. -
SimpleBeanRegistry
-
-
Method Details
-
getAllByType
Description copied from interface:BeanDirectoryGet all objects in the directory of the required type.Why an Iterable not a Collection or Set? It was thought that this would force read only use. Maybe it should be an array...
- Specified by:
getAllByTypein interfaceBeanDirectory- Type Parameters:
T- The required type.- Parameters:
type- The type.- Returns:
- An Iterable for matches. Never null.
-
register
Register an object. The id should not contain reserved characters.- Specified by:
registerin interfaceBeanRegistry- Parameters:
id- The id of the object.component- The object.- Throws:
InvalidIdException
-
lookup
Description copied from interface:BeanDirectoryGet the value which is either a bean or the property of a bean.The path can be either:
- The id of a bean e.g. mybean
- A simple property of a bean e.g. mybean.simple
- An indexed property of a bean e.g. mybean.indexed[1]
- A mapped property of a bean e.g. mybean.mapped(key)
- A nested property of a bean e.g. mybean.complex.simple
- A nested beanownerid/mybean
- Most combinations of the above.
- Specified by:
lookupin interfaceBeanDirectory- Parameters:
path- The path.- Returns:
- The resultant value or null.
- Throws:
ArooaPropertyException- If property access fails.
-
lookup
public <T> T lookup(String path, Class<T> required) throws ArooaPropertyException, ArooaConversionException Description copied from interface:BeanDirectoryGet a value, as above, but also convert it into to given type.Conversion in the directory is required when the client code has no access to the converters required, for instance in a nested Oddjob.
- Specified by:
lookupin interfaceBeanDirectory- Type Parameters:
T- The required type.- Parameters:
path- The full pathrequired- The required type.- Returns:
- An object of the required type or null if none can be found.
- Throws:
ArooaPropertyException- If property access fails.ArooaConversionException- If an object can be found but it can't be converted into the required type.
-
getIdFor
Find the id for the given component.- Specified by:
getIdForin interfaceBeanDirectory- Parameters:
component- The component.- Returns:
- The id or null if none can be found.
-
getAllIds
Description copied from interface:BeanDirectoryProvide all the Ids in the directory. This was added to support Scripting with Graalvm. It isn't implemented everywhere yet, so may throw anUnsupportedOperationExceptionfor a bit.- Specified by:
getAllIdsin interfaceBeanDirectory- Returns:
- A Collection of Ids. Never null.
-
remove
Remove a component from the registry if it exists.- Specified by:
removein interfaceBeanRegistry- Parameters:
component- The component.
-
toString
-