org.apache.avalon.framework.component
Interface ComponentSelector
- Component
public interface ComponentSelector
extends Component
A
ComponentSelector selects
Components based on a
hint. The contract is that all the
Components implement the
same role.
A role is better understood by the analogy of a play. There are many
different roles in a script. Any actor or actress can play any given part
and you get the same results (phrases said, movements made, etc.). The exact
nuances of the performance is different.
Below is a list of things that might be considered the same role:
- XMLInputAdapter and PropertyInputAdapter
- FileGenerator and SQLGenerator
The
ComponentSelector does not specify the methodology of
getting the
Component, merely the interface used to get it.
Therefore the
ComponentSelector can be implemented with a
factory pattern, an object pool, or a simple Hashtable.
Deprecated:
Use ServiceSelector instead.
CVS $Revision: 1.21 $ $Date: 2004/02/11 14:34:24 $ boolean | hasComponent(Object hint)- Check to see if a
Component exists for a hint.
|
void | release(Component component)- Return the
Component when you are finished with it.
|
Component | select(Object hint)- Select the
Component associated with the given hint.
|
hasComponent
public boolean hasComponent(Object hint)
Check to see if a Component exists for a hint.
hint - a string identifying the role to check.
- True if the component exists, False if it does not.
release
public void release(Component component)
Return the Component when you are finished with it. This
allows the ComponentSelector to handle the End-Of-Life Lifecycle
events associated with the Component. Please note, that no Exceptions
should be thrown at this point. This is to allow easy use of the
ComponentSelector system without having to trap Exceptions on a release.
component - The Component we are releasing.
select
public Component select(Object hint)
throws ComponentException Select the
Component associated with the given hint.
For instance, If the
ComponentSelector has a
Generator stored and referenced by a URL, I would use the
following call:
try
{
Generator input;
input = (Generator)selector.select( new URL("foo://demo/url") );
}
catch (...)
{
...
}
hint - A hint to retrieve the correct Component.