Package org.picocontainer.injectors
Class IterativeInjector<T>
- java.lang.Object
-
- org.picocontainer.adapters.AbstractAdapter<T>
-
- org.picocontainer.injectors.AbstractInjector<T>
-
- org.picocontainer.injectors.IterativeInjector<T>
-
- All Implemented Interfaces:
java.io.Serializable,ComponentAdapter<T>,ComponentMonitorStrategy,Injector<T>
- Direct Known Subclasses:
AbstractFieldInjector,SetterInjector
public abstract class IterativeInjector<T> extends AbstractInjector<T>
Injection will happen iteratively after component instantiation- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.picocontainer.injectors.AbstractInjector
AbstractInjector.AmbiguousComponentResolutionException, AbstractInjector.CyclicDependencyException, AbstractInjector.NotConcreteRegistrationException, AbstractInjector.UnsatisfiableDependenciesException
-
Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.annotation.Annotation[]bindingsprotected java.util.List<java.lang.reflect.AccessibleObject>injectionMembersprotected java.lang.reflect.Type[]injectionTypes-
Fields inherited from class org.picocontainer.injectors.AbstractInjector
parameters, verifyingGuard
-
-
Constructor Summary
Constructors Constructor Description IterativeInjector(java.lang.Object componentKey, java.lang.Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, boolean useNames)Constructs a IterativeInjector
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static java.lang.StringcrudeMethodSignature(java.lang.reflect.Method method)java.lang.ObjectdecorateComponentInstance(PicoContainer container, java.lang.reflect.Type into, T instance)A preexiting component instance can be injected into after instantiationTgetComponentInstance(PicoContainer container, java.lang.reflect.Type into)Retrieve the component instance.protected java.lang.reflect.ConstructorgetConstructor()protected java.lang.StringgetName(java.lang.reflect.Method method)protected voidinitializeInjectionMembersAndTypeLists()protected abstract java.lang.ObjectinjectIntoMember(java.lang.reflect.AccessibleObject member, java.lang.Object componentInstance, java.lang.Object toInject)protected booleanisInjectorMethod(java.lang.reflect.Method method)protected NameBindingmakeParameterNameImpl(java.lang.reflect.AccessibleObject member)protected abstract java.lang.ObjectmemberInvocationReturn(java.lang.Object lastReturn, java.lang.reflect.AccessibleObject member, java.lang.Object instance)protected abstract voidunsatisfiedDependencies(PicoContainer container, java.util.Set<java.lang.reflect.Type> unsatisfiableDependencyTypes, java.util.List<java.lang.reflect.AccessibleObject> unsatisfiableDependencyMembers)voidverify(PicoContainer container)Verify that all dependencies for this adapter can be satisfied.-
Methods inherited from class org.picocontainer.injectors.AbstractInjector
accept, box, caughtIllegalAccessException, caughtIllegalAccessException, caughtInstantiationException, caughtInvocationTargetException, createDefaultParameters, getComponentInstance, getDescriptor, newInstance, useNames
-
Methods inherited from class org.picocontainer.adapters.AbstractAdapter
changeMonitor, checkTypeCompatibility, currentMonitor, findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.picocontainer.ComponentAdapter
findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate
-
-
-
-
Constructor Detail
-
IterativeInjector
public IterativeInjector(java.lang.Object componentKey, java.lang.Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, boolean useNames) throws AbstractInjector.NotConcreteRegistrationExceptionConstructs a IterativeInjector- Parameters:
componentKey- the search key for this implementationcomponentImplementation- the concrete implementationparameters- the parameters to use for the initializationmonitor- the component monitor used by this addAdapteruseNames- use argument names when looking up dependencies- Throws:
AbstractInjector.NotConcreteRegistrationException- if the implementation is not a concrete class.java.lang.NullPointerException- if one of the parameters isnull
-
-
Method Detail
-
getConstructor
protected java.lang.reflect.Constructor getConstructor()
-
makeParameterNameImpl
protected NameBinding makeParameterNameImpl(java.lang.reflect.AccessibleObject member)
-
unsatisfiedDependencies
protected abstract void unsatisfiedDependencies(PicoContainer container, java.util.Set<java.lang.reflect.Type> unsatisfiableDependencyTypes, java.util.List<java.lang.reflect.AccessibleObject> unsatisfiableDependencyMembers)
-
getComponentInstance
public T getComponentInstance(PicoContainer container, java.lang.reflect.Type into) throws PicoCompositionException
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>- Specified by:
getComponentInstancein classAbstractInjector<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.
- 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.
-
memberInvocationReturn
protected abstract java.lang.Object memberInvocationReturn(java.lang.Object lastReturn, java.lang.reflect.AccessibleObject member, java.lang.Object instance)
-
decorateComponentInstance
public java.lang.Object decorateComponentInstance(PicoContainer container, java.lang.reflect.Type into, T instance)
Description copied from interface:InjectorA preexiting component instance can be injected into after instantiation- Specified by:
decorateComponentInstancein interfaceInjector<T>- Overrides:
decorateComponentInstancein classAbstractInjector<T>- Parameters:
container- the container that can provide injectable dependenciesinstance- the instance to- Returns:
-
injectIntoMember
protected abstract java.lang.Object injectIntoMember(java.lang.reflect.AccessibleObject member, java.lang.Object componentInstance, java.lang.Object toInject) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException- Throws:
java.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetException
-
verify
public void verify(PicoContainer container) throws PicoCompositionException
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>- Overrides:
verifyin classAbstractInjector<T>- Parameters:
container- thePicoContainer, that is used to resolve any possible dependencies of the instance.- Throws:
PicoCompositionException- if one or more dependencies cannot be resolved.
-
initializeInjectionMembersAndTypeLists
protected void initializeInjectionMembersAndTypeLists()
-
crudeMethodSignature
public static java.lang.String crudeMethodSignature(java.lang.reflect.Method method)
-
getName
protected java.lang.String getName(java.lang.reflect.Method method)
-
isInjectorMethod
protected boolean isInjectorMethod(java.lang.reflect.Method method)
-
-