org.oddjob.arooa.registry
Class SimpleBeanRegistry

java.lang.Object
  extended by org.oddjob.arooa.registry.SimpleBeanRegistry
All Implemented Interfaces:
BeanDirectory, BeanRegistry
Direct Known Subclasses:
LinkedBeanRegistry

public class SimpleBeanRegistry
extends Object
implements BeanRegistry

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
static String RESERVED_CHARACTERS
           
 
Constructor Summary
SimpleBeanRegistry()
          Constructor for a local registry.
SimpleBeanRegistry(PropertyAccessor propertyAccessor, ArooaConverter converter)
           
 
Method Summary
<T> Iterable<T>
getAllByType(Class<T> type)
          Get all objects in the directory of the required type.
 String getIdFor(Object component)
          Find the id for the given component.
 Object lookup(String path)
          Get the value which is either a bean or the property of a bean.
<T> T
lookup(String path, Class<T> required)
          Get a value, as above, but also convert it into to given type.
 void register(String id, Object component)
          Register an object.
 void remove(Object component)
          Remove a component from the registry if it exists.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

RESERVED_CHARACTERS

public static final String RESERVED_CHARACTERS
See Also:
Constant Field Values
Constructor Detail

SimpleBeanRegistry

public SimpleBeanRegistry()
Constructor for a local registry.


SimpleBeanRegistry

public SimpleBeanRegistry(PropertyAccessor propertyAccessor,
                          ArooaConverter converter)
Method Detail

getAllByType

public <T> Iterable<T> getAllByType(Class<T> type)
Description copied from interface: BeanDirectory
Get 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:
getAllByType in interface BeanDirectory
Type Parameters:
T - The required type.
Parameters:
type - The type.
Returns:
An Iterable for matches. Never null.

register

public void register(String id,
                     Object component)
              throws InvalidIdException
Register an object. The id should not contain reserved characters.

Specified by:
register in interface BeanRegistry
Parameters:
id - The id of the object.
object - The object.
Throws:
InvalidIdException

lookup

public Object lookup(String path)
              throws ArooaPropertyException
Description copied from interface: BeanDirectory
Get the value which is either a bean or the property of a bean.

The path can be either:

Specified by:
lookup in interface BeanDirectory
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: BeanDirectory
Get 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:
lookup in interface BeanDirectory
Type Parameters:
T - The required type.
Parameters:
path - The full path
required - 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

public String getIdFor(Object component)
Find the id for the given component.

Specified by:
getIdFor in interface BeanDirectory
Parameters:
component - The component.
Returns:
The id or null if none can be found.

remove

public void remove(Object component)
Remove a component from the registry if it exists.

Specified by:
remove in interface BeanRegistry
Parameters:
component - The compnent.

toString

public String toString()
Overrides:
toString in class Object