|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.picocontainer.adapters.AbstractAdapter<T> org.picocontainer.injectors.AbstractInjector<T>
public abstract class AbstractInjector<T>
This ComponentAdapter will instantiate a new object for each call to
ComponentAdapter.getComponentInstance(PicoContainer, Type)
.
That means that when used with a PicoContainer, getComponent will
return a new object each time.
Nested Class Summary | |
---|---|
static class |
AbstractInjector.AmbiguousComponentResolutionException
Exception that is thrown as part of the introspection. |
static class |
AbstractInjector.CyclicDependencyException
|
static class |
AbstractInjector.NotConcreteRegistrationException
|
static class |
AbstractInjector.UnsatisfiableDependenciesException
Exception thrown when some of the component's dependencies are not satisfiable. |
Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter |
---|
ComponentAdapter.NOTHING |
Field Summary | |
---|---|
protected Parameter[] |
parameters
The parameters to use for initialization. |
protected org.picocontainer.injectors.AbstractInjector.ThreadLocalCyclicDependencyGuard |
verifyingGuard
The cycle guard for the verification. |
Constructor Summary | |
---|---|
protected |
AbstractInjector(Object componentKey,
Class<?> componentImplementation,
Parameter[] parameters,
ComponentMonitor monitor,
boolean useNames)
Constructs a new ComponentAdapter for the given key and implementation. |
Method Summary | |
---|---|
void |
accept(PicoVisitor visitor)
Accepts a visitor for this ComponentAdapter. |
protected Type |
box(Type parameterType)
|
protected T |
caughtIllegalAccessException(ComponentMonitor componentMonitor,
Constructor<T> constructor,
IllegalAccessException e,
PicoContainer container)
inform monitor about access exception. |
protected Object |
caughtIllegalAccessException(ComponentMonitor componentMonitor,
Member member,
Object componentInstance,
IllegalAccessException e)
|
protected T |
caughtInstantiationException(ComponentMonitor componentMonitor,
Constructor<T> constructor,
InstantiationException e,
PicoContainer container)
inform monitor about component instantiation failure |
protected T |
caughtInvocationTargetException(ComponentMonitor componentMonitor,
Member member,
Object componentInstance,
InvocationTargetException e)
inform monitor about exception while instantiating component |
protected Parameter[] |
createDefaultParameters(Type[] parameterTypes)
Create default parameters for the given types. |
Object |
decorateComponentInstance(PicoContainer container,
Type into,
T instance)
A preexiting component instance can be injected into after instantiation |
T |
getComponentInstance(PicoContainer container)
Retrieve the component instance. |
abstract T |
getComponentInstance(PicoContainer container,
Type into)
Retrieve the component instance. |
String |
getDescriptor()
Get a string key descriptor of the component adapter for use in toString() |
protected T |
newInstance(Constructor<T> constructor,
Object[] parameters)
Instantiate an object with given parameters and respect the accessible flag. |
boolean |
useNames()
|
void |
verify(PicoContainer container)
Verify that all dependencies for this adapter can be satisfied. |
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 |
Field Detail |
---|
protected transient org.picocontainer.injectors.AbstractInjector.ThreadLocalCyclicDependencyGuard verifyingGuard
protected transient Parameter[] parameters
Constructor Detail |
---|
protected AbstractInjector(Object componentKey, Class<?> componentImplementation, Parameter[] parameters, ComponentMonitor monitor, boolean useNames)
componentKey
- the search key for this implementationcomponentImplementation
- the concrete implementationparameters
- the parameters to use for the initializationmonitor
- the component monitor used by this ComponentAdapter
AbstractInjector.NotConcreteRegistrationException
- if the implementation is not a concrete class
NullPointerException
- if one of the parameters is null
Method Detail |
---|
public boolean useNames()
protected Parameter[] createDefaultParameters(Type[] parameterTypes)
parameterTypes
- the parameter types
public void verify(PicoContainer container) throws PicoCompositionException
ComponentAdapter
verify
in interface ComponentAdapter<T>
container
- the PicoContainer
, that is used to resolve any possible dependencies of the instance.
PicoCompositionException
- if one or more dependencies cannot be resolved.public T getComponentInstance(PicoContainer container) throws PicoCompositionException
ComponentAdapter
Cached
will always return the
same instance.
getComponentInstance
in interface ComponentAdapter<T>
getComponentInstance
in class AbstractAdapter<T>
container
- the PicoContainer
, that is used to resolve any possible dependencies of the instance.
PicoCompositionException
- if the component has dependencies which could not be resolved, or
instantiation of the component lead to an ambigous situation within the
container.public abstract T getComponentInstance(PicoContainer container, Type into) throws PicoCompositionException
ComponentAdapter
Cached
will always return the
same instance.
getComponentInstance
in interface ComponentAdapter<T>
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.
PicoCompositionException
- if the component has dependencies which could not be resolved, or
instantiation of the component lead to an ambiguous situation within the
container.public Object decorateComponentInstance(PicoContainer container, Type into, T instance)
Injector
decorateComponentInstance
in interface Injector<T>
container
- the container that can provide injectable dependenciesinstance
- the instance to
public void accept(PicoVisitor visitor)
ComponentAdapter
PicoContainer
, that
cascades the visitor also down to all its ComponentAdapter instances.
accept
in interface ComponentAdapter<T>
accept
in class AbstractAdapter<T>
visitor
- the visitor.public String getDescriptor()
ComponentAdapter
getDescriptor
in interface ComponentAdapter<T>
protected T newInstance(Constructor<T> constructor, Object[] parameters) throws InstantiationException, IllegalAccessException, InvocationTargetException
constructor
- the constructor to useparameters
- the parameters for the constructor
InstantiationException
IllegalAccessException
InvocationTargetException
protected T caughtInstantiationException(ComponentMonitor componentMonitor, Constructor<T> constructor, InstantiationException e, PicoContainer container)
componentMonitor
- constructor
- e
- container
-
protected T caughtIllegalAccessException(ComponentMonitor componentMonitor, Constructor<T> constructor, IllegalAccessException e, PicoContainer container)
componentMonitor
- constructor
- e
- container
-
protected T caughtInvocationTargetException(ComponentMonitor componentMonitor, Member member, Object componentInstance, InvocationTargetException e)
componentMonitor
- member
- componentInstance
- e
-
protected Object caughtIllegalAccessException(ComponentMonitor componentMonitor, Member member, Object componentInstance, IllegalAccessException e)
protected Type box(Type parameterType)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |