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
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:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.picocontainer.Parameter
Parameter.DelegateResolver, Parameter.NotResolved, Parameter.Resolver, Parameter.ValueResolver
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ComponentParameter
UseARRAY
asParameter
for an Array that must have elements.static final ComponentParameter
UseARRAY_ALLOW_EMPTY
asParameter
for an Array that may have no elements.static final ComponentParameter
DEFAULT
is an instance of ComponentParameter using the default constructor.Fields inherited from class org.picocontainer.parameters.BasicComponentParameter
BASIC_DEFAULT
-
Constructor Summary
ConstructorsConstructorDescriptionExpect any scalar parameter of the appropriate type or anArray
.ComponentParameter
(boolean emptyCollection) Expect any scalar parameter of the appropriate type or anArray
.ComponentParameter
(Class componentValueType, boolean emptyCollection) ComponentParameter
(Class componentKeyType, Class componentValueType, boolean emptyCollection) ComponentParameter
(Object componentKey) Expect a parameter matching a component of a specific key. -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(PicoVisitor visitor) Accept the visitor for the currentParameter
.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 containerMethods 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
-
Constructor Details
-
ComponentParameter
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 anArray
. -
ComponentParameter
public ComponentParameter(boolean emptyCollection) Expect any scalar parameter of the appropriate type or anArray
. Resolve the parameter even if no compnoent is of the array's component type.- Parameters:
emptyCollection
-true
allows an Array to be empty
-
ComponentParameter
Expect any scalar parameter of the appropriate type or the collecting typeArray
,Collection
orMap
. 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 typeArray
,Collection
orMap
. 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 typecomponentValueType
- 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 interfaceParameter
- Overrides:
resolve
in classBasicComponentParameter
- Parameters:
container
- the container from which dependencies are resolved.forAdapter
- theComponentAdapter
that is asking for the instanceinjecteeAdapter
- the adapter to be injected into (null for N/A)expectedType
- the required typeexpectedNameBinding
- Expected parameter nameuseNames
- should use parameter names for disambiguationbinding
- @returntrue
if the component parameter can be resolved.- Returns:
true
if the Parameter can be verified.- See Also:
-
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 interfaceParameter
- Overrides:
verify
in classBasicComponentParameter
- Parameters:
container
- the container from which dependencies are resolved.adapter
- theComponentAdapter
that is asking for the verificationexpectedType
- the required typeexpectedNameBinding
- Expected parameter nameuseNames
-binding
-
-
accept
Accept the visitor for the currentParameter
. If internally aCollectionComponentParameter
is used, it is visited also.- Specified by:
accept
in interfaceParameter
- Overrides:
accept
in classBasicComponentParameter
- Parameters:
visitor
- the visitor.- See Also:
-