org.oddjob.arooa.registry
Interface BeanDirectory

All Known Subinterfaces:
BeanRegistry, RemoteDirectory
All Known Implementing Classes:
LinkedBeanRegistry, MBeanDirectory, SimpleBeanRegistry

public interface BeanDirectory

Something that is able to provide components by a path.


Method Summary
<T> Iterable<T>
getAllByType(Class<T> type)
          Get all objects in the directory of the required type.
 String getIdFor(Object bean)
          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.
 

Method Detail

lookup

Object lookup(String path)
              throws ArooaPropertyException
Get the value which is either a bean or the property of a bean.

The path can be either:

Parameters:
fullPath - The path.
Returns:
The resultant value or null.
Throws:
ArooaPropertyException - If property access fails.

lookup

<T> T lookup(String path,
             Class<T> required)
         throws ArooaPropertyException,
                ArooaConversionException
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.

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:
ArooaConversionException - If an object can be found but it can't be converted into the required type.
ArooaPropertyException - If property access fails.

getIdFor

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

Parameters:
component - The component.
Returns:
The id or null if none can be found.

getAllByType

<T> Iterable<T> getAllByType(Class<T> type)
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...

Type Parameters:
T - The required type.
Parameters:
type - The type.
Returns:
An Iterable for matches. Never null.