Package org.picocontainer.parameters

# Class ComponentParameter

java.lang.Object
org.picocontainer.parameters.AbstractParameter
org.picocontainer.parameters.BasicComponentParameter
org.picocontainer.parameters.ComponentParameter

All Implemented Interfaces:
  `Serializable`, `Parameter`

public class ComponentParameter extends BasicComponentParameter
A ComponentParameter should be used to pass in a particular component as argument to a different component's constructor. This is particularly useful in cases where several components of the same type have been registered, but with a different key. Passing a ComponentParameter as a parameter when registering a component will give PicoContainer a hint about what other component to use in the constructor. Collecting parameter types are supported for `Array`,`Collection`and `Map`.

Author:
  Jon Tirsén, Aslak Hellesøy, Jörg Schaible, Thomas Heller
See Also:
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.picocontainer.Parameter

`Parameter.DelegateResolver, Parameter.NotResolved, Parameter.Resolver, Parameter.ValueResolver`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ComponentParameter`
`ARRAY`
Use `ARRAY` as `Parameter`for an Array that must have elements.
`static final ComponentParameter`
`ARRAY_ALLOW_EMPTY`
Use `ARRAY_ALLOW_EMPTY` as `Parameter`for an Array that may have no elements.
`static final ComponentParameter`
`DEFAULT`
`DEFAULT` is an instance of ComponentParameter using the default constructor.

### Fields inherited from class org.picocontainer.parameters.BasicComponentParameter

`BASIC_DEFAULT`

### Fields inherited from interface org.picocontainer.Parameter

`ZERO`

## Constructor Summary

Constructors
Constructor
Description
`ComponentParameter()`
Expect any scalar parameter of the appropriate type or an `Array`.
`ComponentParameter(boolean emptyCollection)`
Expect any scalar parameter of the appropriate type or an `Array`.
`ComponentParameter(Class componentValueType, boolean emptyCollection)`
Expect any scalar parameter of the appropriate type or the collecting type `Array`,`Collection`or `Map`.
`ComponentParameter(Class componentKeyType, Class componentValueType, boolean emptyCollection)`
Expect any scalar parameter of the appropriate type or the collecting type `Array`,`Collection`or `Map`.
`ComponentParameter(Object componentKey)`
Expect a parameter matching a component of a specific key.

## Method Summary

Modifier and Type
Method
Description
`void`
`accept(PicoVisitor visitor)`
Accept the visitor for the current `Parameter`.
`Parameter.Resolver`
`resolve(PicoContainer container, ComponentAdapter<?> forAdapter, ComponentAdapter<?> injecteeAdapter, Type expectedType, NameBinding expectedNameBinding, boolean useNames, Annotation binding)`
Check whether the given Parameter can be satisfied by the container.
`void`
`verify(PicoContainer container, ComponentAdapter<?> adapter, Type expectedType, NameBinding expectedNameBinding, boolean useNames, Annotation binding)`
Verify that the Parameter can satisfy the expected type using the container

### Methods inherited from class org.picocontainer.parameters.BasicComponentParameter

`findInjectorOrInstanceAdapter, makeFoundAmbiguousStrings, resolveAdapter`

### Methods inherited from class org.picocontainer.parameters.AbstractParameter

`isResolvable, resolveInstance`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.picocontainer.Parameter

`isResolvable, resolveInstance`

## Field Details

### DEFAULT

public static final ComponentParameter DEFAULT
`DEFAULT` is an instance of ComponentParameter using the default constructor.

### ARRAY

public static final ComponentParameter ARRAY
Use `ARRAY` as `Parameter`for an Array that must have elements.

### ARRAY_ALLOW_EMPTY

public static final ComponentParameter ARRAY_ALLOW_EMPTY
Use `ARRAY_ALLOW_EMPTY` as `Parameter`for an Array that may have no elements.

## Constructor Details

### ComponentParameter

public ComponentParameter(Object componentKey)
Expect a parameter matching a component of a specific key.

Parameters:
  `componentKey` - the key of the desired addComponent

### ComponentParameter

public ComponentParameter()
Expect any scalar parameter of the appropriate type or an `Array`.

### ComponentParameter

public ComponentParameter(boolean emptyCollection)
Expect any scalar parameter of the appropriate type or an `Array`. Resolve the parameter even if no compnoent is of the array's component type.

Parameters:
  `emptyCollection` - `true` allows an Array to be empty

### ComponentParameter

public ComponentParameter(Class componentValueType, boolean emptyCollection)
Expect any scalar parameter of the appropriate type or the collecting type `Array`,`Collection`or `Map`. The components in the collection will be of the specified type.

Parameters:
  `componentValueType` - the component's type (ignored for an Array)
  `emptyCollection` - `true` allows the collection to be empty

### ComponentParameter

public ComponentParameter(Class componentKeyType, Class componentValueType, boolean emptyCollection)
Expect any scalar parameter of the appropriate type or the collecting type `Array`,`Collection`or `Map`. The components in the collection will be of the specified type and their adapter's key must have a particular type.

Parameters:
  `componentKeyType` - the component adapter's key type
  `componentValueType` - the component's type (ignored for an Array)
  `emptyCollection` - `true` allows the collection to be empty

## Method Details

### resolve

public Parameter.Resolver resolve(PicoContainer container, ComponentAdapter<?> forAdapter, ComponentAdapter<?> injecteeAdapter, Type expectedType, NameBinding expectedNameBinding, boolean useNames, Annotation binding)
Description copied from class: `BasicComponentParameter`
Check whether the given Parameter can be satisfied by the container.

Specified by:
  `resolve` in interface `Parameter`
Overrides:
  `resolve` in class `BasicComponentParameter`
Parameters:
  `container` - the container from which dependencies are resolved.
  `forAdapter` - the `ComponentAdapter` that is asking for the instance
  `injecteeAdapter` - the adapter to be injected into (null for N/A)
  `expectedType` - the required type
  `expectedNameBinding` - Expected parameter name
  `useNames` - should use parameter names for disambiguation
  `binding` - @return `true` if the component parameter can be resolved.
Returns:
  `true` if the Parameter can be verified.
See Also:
  - invalid reference

        Parameter#isResolvable(PicoContainer, ComponentAdapter, Class, NameBinding,boolean, Annotation)

### verify

public void verify(PicoContainer container, ComponentAdapter<?> adapter, Type expectedType, NameBinding expectedNameBinding, boolean useNames, Annotation binding)
Description copied from interface: `Parameter`
Verify that the Parameter can satisfy the expected type using the container

Specified by:
  `verify` in interface `Parameter`
Overrides:
  `verify` in class `BasicComponentParameter`
Parameters:
  `container` - the container from which dependencies are resolved.
  `adapter` - the `ComponentAdapter` that is asking for the verification
  `expectedType` - the required type
  `expectedNameBinding` - Expected parameter name
  `useNames` -
  `binding` -

### accept

public void accept(PicoVisitor visitor)
Accept the visitor for the current `Parameter`. If internally a `CollectionComponentParameter`is used, it is visited also.

Specified by:
  `accept` in interface `Parameter`
Overrides:
  `accept` in class `BasicComponentParameter`
Parameters:
  `visitor` - the visitor.
See Also:
  - `BasicComponentParameter.accept(org.picocontainer.PicoVisitor)`