org.picocontainer.injectors
Class ProviderAdapter

java.lang.Object
  extended by org.picocontainer.injectors.ProviderAdapter
All Implemented Interfaces:
ComponentAdapter, Injector, Provider

public class ProviderAdapter
extends Object
implements Injector, Provider

Providers are a type of Injector that can participate in Injection via a custom method. Implementors of this class must implement a single method called provide. That method must return the component type intended to be provided. The method can accept parameters that PicoContainer will satisfy.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING
 
Constructor Summary
protected ProviderAdapter()
           
  ProviderAdapter(Object provider)
           
  ProviderAdapter(Object provider, boolean useNames)
           
 
Method Summary
 void accept(PicoVisitor visitor)
          Accepts a visitor for this ComponentAdapter.
 Object decorateComponentInstance(PicoContainer container, Type into, Object instance)
          A preexiting component instance can be injected into after instantiation
 ComponentAdapter findAdapterOfType(Class adapterType)
          Locates a component adapter of type componentAdapterType in the ComponentAdapter chain.
 Class getComponentImplementation()
          Retrieve the class of the component.
 Object getComponentInstance(PicoContainer container)
          Deprecated. 
 Object getComponentInstance(PicoContainer container, Type into)
          Retrieve the component instance.
 Object getComponentKey()
          Retrieve the key associated with the component.
 ComponentAdapter getDelegate()
          Component adapters may be nested in a chain, and this method is used to grab the next ComponentAdapter in the chain.
 String getDescriptor()
          Get a string key descriptor of the component adapter.
static Method getProvideMethod(Class clazz)
           
protected  boolean useNames()
           
 void verify(PicoContainer container)
          Verify that all dependencies for this adapter can be satisfied.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProviderAdapter

protected ProviderAdapter()

ProviderAdapter

public ProviderAdapter(Object provider)

ProviderAdapter

public ProviderAdapter(Object provider,
                       boolean useNames)
Method Detail

useNames

protected boolean useNames()

decorateComponentInstance

public Object decorateComponentInstance(PicoContainer container,
                                        Type into,
                                        Object instance)
Description copied from interface: Injector
A preexiting component instance can be injected into after instantiation

Specified by:
decorateComponentInstance in interface Injector
Parameters:
container - the container that can provide injectable dependencies
instance - the instance to
Returns:

getComponentKey

public Object getComponentKey()
Description copied from interface: ComponentAdapter
Retrieve the key associated with the component.

Specified by:
getComponentKey in interface ComponentAdapter
Returns:
the component's key. Should either be a class type (normally an interface) or an identifier that is unique (within the scope of the current PicoContainer).

getComponentImplementation

public Class getComponentImplementation()
Description copied from interface: ComponentAdapter
Retrieve the class of the component.

Specified by:
getComponentImplementation in interface ComponentAdapter
Returns:
the component's implementation class. Should normally be a concrete class (ie, a class that can be instantiated).

getComponentInstance

@Deprecated
public Object getComponentInstance(PicoContainer container)
                            throws PicoCompositionException
Deprecated. 

Description copied from interface: ComponentAdapter
Retrieve the component instance. This method will usually create a new instance each time it is called, but that is not required. For example, Cached will always return the same instance.

Specified by:
getComponentInstance in interface ComponentAdapter
Parameters:
container - the PicoContainer, that is used to resolve any possible dependencies of the instance.
Returns:
the component instance.
Throws:
PicoCompositionException - if the component has dependencies which could not be resolved, or instantiation of the component lead to an ambigous situation within the container.

getComponentInstance

public Object getComponentInstance(PicoContainer container,
                                   Type into)
                            throws PicoCompositionException
Description copied from interface: ComponentAdapter
Retrieve the component instance. This method will usually create a new instance each time it is called, but that is not required. For example, Cached will always return the same instance.

Specified by:
getComponentInstance in interface ComponentAdapter
Parameters:
container - the PicoContainer, that is used to resolve any possible dependencies of the instance.
into - the class that is about to be injected into. Use ComponentAdapter.NOTHING.class if this is not important to you.
Returns:
the component instance.
Throws:
PicoCompositionException - if the component has dependencies which could not be resolved, or instantiation of the component lead to an ambiguous situation within the container.

getProvideMethod

public static Method getProvideMethod(Class clazz)

verify

public void verify(PicoContainer container)
            throws PicoCompositionException
Description copied from interface: ComponentAdapter
Verify that all dependencies for this adapter can be satisfied. Normally, the adapter should verify this by checking that the associated PicoContainer contains all the needed dependencies.

Specified by:
verify in interface ComponentAdapter
Parameters:
container - the PicoContainer, that is used to resolve any possible dependencies of the instance.
Throws:
PicoCompositionException - if one or more dependencies cannot be resolved.

accept

public void accept(PicoVisitor visitor)
Description copied from interface: ComponentAdapter
Accepts a visitor for this ComponentAdapter. The method is normally called by visiting a PicoContainer, that cascades the visitor also down to all its ComponentAdapter instances.

Specified by:
accept in interface ComponentAdapter
Parameters:
visitor - the visitor.

getDelegate

public ComponentAdapter getDelegate()
Description copied from interface: ComponentAdapter
Component adapters may be nested in a chain, and this method is used to grab the next ComponentAdapter in the chain.

Specified by:
getDelegate in interface ComponentAdapter
Returns:
the next component adapter in line or null if there is no delegate ComponentAdapter.

findAdapterOfType

public ComponentAdapter findAdapterOfType(Class adapterType)
Description copied from interface: ComponentAdapter
Locates a component adapter of type componentAdapterType in the ComponentAdapter chain. Will return null if there is no adapter of the given type.

Specified by:
findAdapterOfType in interface ComponentAdapter
Returns:
the appropriate component adapter of type U. May return null if the component adapter type is not returned.

getDescriptor

public String getDescriptor()
Description copied from interface: ComponentAdapter
Get a string key descriptor of the component adapter.

Specified by:
getDescriptor in interface ComponentAdapter
Returns:


Copyright © 2003-2009 Codehaus. All Rights Reserved.