ComponentSelector (Avalon Framework API)
Keywords: org.apache.avalon.framework.component.ComponentSelector interface

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.avalon.framework.component
Interface ComponentSelector

All Superinterfaces:
  Component

All Known Implementing Classes:
  DefaultComponentSelector, WrapperComponentSelector

public interface ComponentSelector
extends Component

A `ComponentSelector` selects `Component`s based on a hint. The contract is that all the `Component`s 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.

Version:
  CVS $Revision: 1.21 $ $Date: 2004/02/11 14:34:24 $
Author:
  Avalon Development Team
See Also:
  `Component`, `Composable`, `ComponentManager`

Method Summary
`boolean` | `hasComponent(java.lang.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(java.lang.Object hint)` Select the `Component` associated with the given hint.

Method Detail

### select

    public Component select(java.lang.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 (...)
       {
           ...
       }

  Parameters:
    `hint` - A hint to retrieve the correct `Component`.
  Returns:
    the desired component
  Throws:
    `ComponentException` - If the given role is not associated with a `Component`, or a `Component` instance cannot be created.

### hasComponent

    public boolean hasComponent(java.lang.Object hint)

  Check to see if a `Component` exists for a hint.

  Parameters:
    `hint` - a string identifying the role to check.
  Returns:
    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.

  Parameters:
    `component` - The Component we are releasing.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © The Apache Software Foundation. All Rights Reserved.