Class BasicComponentParameter

  • All Implemented Interfaces:
    java.io.Serializable, Parameter
    Direct Known Subclasses:
    ComponentParameter

    public class BasicComponentParameter
    extends AbstractParameter
    implements Parameter, java.io.Serializable
    A BasicComponentParameter 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. This Parameter will never resolve against a collecting type, that is not directly registered in the PicoContainer itself.
    Author:
    Jon Tirsén, Aslak Hellesøy, Jörg Schaible, Thomas Heller
    See Also:
    Serialized Form
    • Field Detail

      • BASIC_DEFAULT

        public static final BasicComponentParameter BASIC_DEFAULT
        BASIC_DEFAULT is an instance of BasicComponentParameter using the default constructor.
    • Constructor Detail

      • BasicComponentParameter

        public BasicComponentParameter​(java.lang.Object componentKey)
        Expect a parameter matching a component of a specific key.
        Parameters:
        componentKey - the key of the desired addComponent
      • BasicComponentParameter

        public BasicComponentParameter()
        Expect any parameter of the appropriate type.
    • Method Detail

      • resolve

        public Parameter.Resolver resolve​(PicoContainer container,
                                          ComponentAdapter<?> forAdapter,
                                          ComponentAdapter<?> injecteeAdapter,
                                          java.lang.reflect.Type expectedType,
                                          NameBinding expectedNameBinding,
                                          boolean useNames,
                                          java.lang.annotation.Annotation binding)
        Check whether the given Parameter can be satisfied by the container.
        Specified by:
        resolve in interface Parameter
        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
        Returns:
        true if the Parameter can be verified.
        Throws:
        PicoCompositionException
        See Also:
        Parameter#isResolvable(PicoContainer, ComponentAdapter, Class, NameBinding ,boolean, Annotation)
      • verify

        public void verify​(PicoContainer container,
                           ComponentAdapter<?> forAdapter,
                           java.lang.reflect.Type expectedType,
                           NameBinding expectedNameBinding,
                           boolean useNames,
                           java.lang.annotation.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
        Parameters:
        container - the container from which dependencies are resolved.
        forAdapter - the ComponentAdapter that is asking for the verification
        expectedType - the required type
        expectedNameBinding - Expected parameter name
      • makeFoundAmbiguousStrings

        public static <T> java.lang.String[] makeFoundAmbiguousStrings​(java.util.Collection<ComponentAdapter<T>> found)