Package org.picocontainer.injectors
Class FactoryInjector<T>
java.lang.Object
org.picocontainer.injectors.FactoryInjector<T>
- All Implemented Interfaces:
ComponentAdapter<T>
,Injector<T>
An Injector which provides an custom instance in a factory style
- Author:
- Paul Hammant
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(PicoVisitor visitor) Accepts a visitor for this ComponentAdapter.boolean
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<?>
Retrieve the class of the component.getComponentInstance
(PicoContainer container) Retrieve the component instance.abstract T
getComponentInstance
(PicoContainer container, Type into) Retrieve the component instance.Retrieve the key associated with the component.Component adapters may be nested in a chain, and this method is used to grab the next ComponentAdapter in the chain.Get a string key descriptor of the component adapter for use in toString()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 Details
-
FactoryInjector
- Throws:
PicoCompositionException
-
FactoryInjector
-
-
Method Details
-
getClass
-
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
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
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
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
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
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
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
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
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
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
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
-
stop
-
dispose
-
componentHasLifecycle
public boolean componentHasLifecycle()
-