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 TypeMethodDescriptionvoidaccept(PicoVisitor visitor) Accepts a visitor for this ComponentAdapter.booleandecorateComponentInstance(PicoContainer container, Type into, T instance) A preexiting component instance can be injected into after instantiationvoiddispose(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 TgetComponentInstance(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.voidstart(PicoContainer container) voidstop(PicoContainer container) voidverify(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:ComponentAdapterRetrieve the key associated with the component.- Specified by:
getComponentKeyin 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:ComponentAdapterRetrieve the class of the component.- Specified by:
getComponentImplementationin 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:ComponentAdapterAccepts 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:
acceptin interfaceComponentAdapter<T>- Parameters:
visitor- the visitor.
-
getDelegate
Description copied from interface:ComponentAdapterComponent adapters may be nested in a chain, and this method is used to grab the next ComponentAdapter in the chain.- Specified by:
getDelegatein interfaceComponentAdapter<T>- Returns:
- the next component adapter in line or null if there is no delegate ComponentAdapter.
-
findAdapterOfType
Description copied from interface:ComponentAdapterLocates a component adapter of type componentAdapterType in the ComponentAdapter chain. Will return null if there is no adapter of the given type.- Specified by:
findAdapterOfTypein 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:ComponentAdapterRetrieve the component instance. This method will usually create a new instance each time it is called, but that is not required. For example,Cachedwill always return the same instance.- Specified by:
getComponentInstancein 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:ComponentAdapterRetrieve the component instance. This method will usually create a new instance each time it is called, but that is not required. For example,Cachedwill always return the same instance.- Specified by:
getComponentInstancein 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:InjectorA preexiting component instance can be injected into after instantiation- Specified by:
decorateComponentInstancein interfaceInjector<T>- Parameters:
container- the container that can provide injectable dependenciesinto-instance- the instance to- Returns:
-
verify
Description copied from interface:ComponentAdapterVerify 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:
verifyin interfaceComponentAdapter<T>- Parameters:
container- thePicoContainer, that is used to resolve any possible dependencies of the instance.
-
getDescriptor
Description copied from interface:ComponentAdapterGet a string key descriptor of the component adapter for use in toString()- Specified by:
getDescriptorin interfaceComponentAdapter<T>- Returns:
- the descriptor
-
start
-
stop
-
dispose
-
componentHasLifecycle
public boolean componentHasLifecycle()
-