Package org.picocontainer.injectors
Class FactoryInjector<T>
- java.lang.Object
-
- org.picocontainer.injectors.FactoryInjector<T>
-
- All Implemented Interfaces:
ComponentAdapter<T>
,Injector<T>
public abstract class FactoryInjector<T> extends Object implements Injector<T>
An Injector which provides an custom instance in a factory style
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FactoryInjector.CantWorkItOut
-
Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING
-
-
Constructor Summary
Constructors Constructor Description FactoryInjector()
FactoryInjector(Class<T> key)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
accept(PicoVisitor visitor)
Accepts a visitor for this ComponentAdapter.boolean
componentHasLifecycle()
Object
decorateComponentInstance(PicoContainer container, Type into, T instance)
A preexiting component instance can be injected into after instantiationvoid
dispose(PicoContainer container)
<U extends ComponentAdapter>
UfindAdapterOfType(Class<U> adapterType)
Locates a component adapter of type componentAdapterType in the ComponentAdapter chain.static Class<?>
getClass(Type type)
Class<? extends T>
getComponentImplementation()
Retrieve the class of the component.T
getComponentInstance(PicoContainer container)
Retrieve the component instance.abstract T
getComponentInstance(PicoContainer container, Type into)
Retrieve the component instance.Object
getComponentKey()
Retrieve the key associated with the component.ComponentAdapter<T>
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 for use in toString()static <T> List<Class<?>>
getTypeArguments(Class<FactoryInjector> class1, Class<? extends Object> class2)
Get the actual type arguments a child class has used to extend a generic base class.void
start(PicoContainer container)
void
stop(PicoContainer container)
void
verify(PicoContainer container)
Verify that all dependencies for this adapter can be satisfied.
-
-
-
Constructor Detail
-
FactoryInjector
public FactoryInjector() throws PicoCompositionException
- Throws:
PicoCompositionException
-
-
Method Detail
-
getTypeArguments
public static <T> List<Class<?>> getTypeArguments(Class<FactoryInjector> class1, Class<? extends Object> class2)
Get the actual type arguments a child class has used to extend a generic base class.- Parameters:
class1
- the base classclass2
- the child class- Returns:
- a list of the raw classes for the actual type arguments.
-
getComponentKey
public Object getComponentKey()
Description copied from interface:ComponentAdapter
Retrieve the key associated with the component.- Specified by:
getComponentKey
in interfaceComponentAdapter<T>
- 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<? extends T> getComponentImplementation()
Description copied from interface:ComponentAdapter
Retrieve the class of the component.- Specified by:
getComponentImplementation
in interfaceComponentAdapter<T>
- Returns:
- the component's implementation class. Should normally be a concrete class (ie, a class that can be instantiated).
-
accept
public void accept(PicoVisitor visitor)
Description copied from interface:ComponentAdapter
Accepts a visitor for this ComponentAdapter. The method is normally called by visiting aPicoContainer
, that cascades the visitor also down to all its ComponentAdapter instances.- Specified by:
accept
in interfaceComponentAdapter<T>
- Parameters:
visitor
- the visitor.
-
getDelegate
public ComponentAdapter<T> 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 interfaceComponentAdapter<T>
- Returns:
- the next component adapter in line or null if there is no delegate ComponentAdapter.
-
findAdapterOfType
public <U extends ComponentAdapter> U findAdapterOfType(Class<U> 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 interfaceComponentAdapter<T>
- Type Parameters:
U
- the type of ComponentAdapter being located.- Parameters:
adapterType
- the class of the adapter type being located. Never null.- Returns:
- the appropriate component adapter of type U. May return null if the component adapter type is not returned.
-
getComponentInstance
public T getComponentInstance(PicoContainer container)
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 interfaceComponentAdapter<T>
- Parameters:
container
- thePicoContainer
, that is used to resolve any possible dependencies of the instance.- Returns:
- the component instance.
-
getComponentInstance
public abstract T getComponentInstance(PicoContainer container, Type into)
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 interfaceComponentAdapter<T>
- Parameters:
container
- thePicoContainer
, 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.
-
decorateComponentInstance
public Object decorateComponentInstance(PicoContainer container, Type into, T instance)
Description copied from interface:Injector
A preexiting component instance can be injected into after instantiation- Specified by:
decorateComponentInstance
in interfaceInjector<T>
- Parameters:
container
- the container that can provide injectable dependenciesinstance
- the instance to- Returns:
-
verify
public void verify(PicoContainer container)
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 interfaceComponentAdapter<T>
- Parameters:
container
- thePicoContainer
, that is used to resolve any possible dependencies of the instance.
-
getDescriptor
public String getDescriptor()
Description copied from interface:ComponentAdapter
Get a string key descriptor of the component adapter for use in toString()- Specified by:
getDescriptor
in interfaceComponentAdapter<T>
- Returns:
- the descriptor
-
start
public void start(PicoContainer container)
-
stop
public void stop(PicoContainer container)
-
dispose
public void dispose(PicoContainer container)
-
componentHasLifecycle
public boolean componentHasLifecycle()
-
-