Package org.picocontainer.injectors

# Class CompositeInjector<T>

java.lang.Object
org.picocontainer.adapters.AbstractAdapter<T>
org.picocontainer.injectors.AbstractInjector<T>
org.picocontainer.injectors.CompositeInjector<T>

All Implemented Interfaces:
  `Serializable`, `ComponentAdapter<T>`, `ComponentMonitorStrategy`, `Injector<T>`

Direct Known Subclasses:
  `MultiInjector`

public class CompositeInjector<T> extends AbstractInjector<T>

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 inherited from class org.picocontainer.injectors.AbstractInjector

`parameters, verifyingGuard`

## Constructor Summary

Constructors
Constructor
Description
`CompositeInjector(Object componentKey, Class<?> componentImplementation, Parameter[] parameters, ComponentMonitor monitor, boolean useNames, Injector... injectors)`

## Method Summary

Modifier and Type
Method
Description
`final void`
`accept(PicoVisitor visitor)`
Accepts a visitor for this ComponentAdapter.
`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.
`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()
`void`
`verify(PicoContainer container)`
Verify that all dependencies for this adapter can be satisfied.

### Methods inherited from class org.picocontainer.injectors.AbstractInjector

`box, caughtIllegalAccessException, caughtIllegalAccessException, caughtInstantiationException, caughtInvocationTargetException, createDefaultParameters, 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 Details

### CompositeInjector

public CompositeInjector(Object componentKey, Class<?> componentImplementation, Parameter[] parameters, ComponentMonitor monitor, boolean useNames, Injector... injectors)

## Method Details

### getComponentInstance

public T getComponentInstance(PicoContainer container) throws PicoCompositionException
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 interface `ComponentAdapter<T>`
Overrides:
  `getComponentInstance` in class `AbstractInjector<T>`
Parameters:
  `container` - the `PicoContainer`, that is used to resolve any possible dependencies of the instance.
Returns:
  the component instance.
Throws:
  `PicoCompositionException` - if the component has dependencies which could not be resolved, or instantiation of the component lead to an ambigous situation within the container.

### getComponentInstance

public T getComponentInstance(PicoContainer container, Type into) throws PicoCompositionException
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 interface `ComponentAdapter<T>`
Specified by:
  `getComponentInstance` in class `AbstractInjector<T>`
Parameters:
  `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.
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.

### 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 interface `Injector<T>`
Overrides:
  `decorateComponentInstance` in class `AbstractInjector<T>`
Parameters:
  `container` - the container that can provide injectable dependencies
  `into` -
  `instance` - the instance to
Returns:
  the object returned is the result of the last of the injectors delegated to

### verify

public void verify(PicoContainer container) throws PicoCompositionException
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 interface `ComponentAdapter<T>`
Overrides:
  `verify` in class `AbstractInjector<T>`
Parameters:
  `container` - the `PicoContainer`, that is used to resolve any possible dependencies of the instance.
Throws:
  `PicoCompositionException` - if one or more dependencies cannot be resolved.

### accept

public final void accept(PicoVisitor visitor)
Description copied from interface: `ComponentAdapter`
Accepts a visitor for this ComponentAdapter. The method is normally called by visiting a `PicoContainer`, that cascades the visitor also down to all its ComponentAdapter instances.

Specified by:
  `accept` in interface `ComponentAdapter<T>`
Overrides:
  `accept` in class `AbstractInjector<T>`
Parameters:
  `visitor` - the visitor.

### 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 interface `ComponentAdapter<T>`
Overrides:
  `getDescriptor` in class `AbstractInjector<T>`
Returns:
  the descriptor