Class HiddenImplementation<T>

  • All Implemented Interfaces:
    java.io.Serializable, Behavior<T>, ComponentAdapter<T>, ComponentLifecycle<T>, ComponentMonitorStrategy, LifecycleStrategy
    Direct Known Subclasses:
    Intercepted

    public class HiddenImplementation<T>
    extends AbstractBehavior<T>
    This component adapter makes it possible to hide the implementation of a real subject (behind a proxy) provided the key is an interface.

    This class exists here, because a) it has no deps on external jars, b) dynamic proxy is quite easy. The user is prompted to look at picocontainer-gems for alternate and bigger implementations.

    Author:
    Aslak Hellesøy, Paul Hammant
    See Also:
    for a more feature-rich version of this class., Serialized Form
    • Constructor Detail

      • HiddenImplementation

        public HiddenImplementation​(ComponentAdapter<T> delegate)
        Creates an ImplementationHidingComponentAdapter with a delegate
        Parameters:
        delegate - the component adapter to which this adapter delegates
    • Method Detail

      • getComponentInstance

        public T getComponentInstance​(PicoContainer container,
                                      java.lang.reflect.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>
        Overrides:
        getComponentInstance in class AbstractBehavior<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.
      • getDescriptor

        public java.lang.String getDescriptor()
        Description copied from interface: ComponentAdapter
        Get a string key descriptor of the component adapter for use in toString()
        Returns:
        the descriptor
      • createProxy

        protected T createProxy​(java.lang.Class[] interfaces,
                                PicoContainer container,
                                java.lang.ClassLoader classLoader)
      • invokeMethod

        protected java.lang.Object invokeMethod​(java.lang.Object componentInstance,
                                                java.lang.reflect.Method method,
                                                java.lang.Object[] args,
                                                PicoContainer container)
                                         throws java.lang.Throwable
        Throws:
        java.lang.Throwable