org.picocontainer.gems.adapters
Class DelegateAdaptorFactory

java.lang.Object
  extended by org.picocontainer.injectors.AbstractInjectionFactory
      extended by org.picocontainer.gems.adapters.DelegateAdaptorFactory
All Implemented Interfaces:
Serializable, ComponentFactory, InjectionFactory

public class DelegateAdaptorFactory
extends AbstractInjectionFactory

Mirrored AdaptorFactory for handling delegate methods.

Author:
Michael Rimov
See Also:
Serialized Form

Constructor Summary
DelegateAdaptorFactory()
          Default constructor.
 
Method Summary
<T> ComponentAdapter<T>
createComponentAdapter(ComponentMonitor componentMonitor, LifecycleStrategy lifecycleStrategy, Properties componentProperties, Object componentKey, Class<T> componentImplementation, Parameter... parameters)
          
static
<INSTANCE,RETURN_TYPE>
DelegateMethod<INSTANCE,RETURN_TYPE>
createDelegate(Class<INSTANCE> targetType, String methodName, Object... parameters)
          Generic-friendly instantiation.
static Properties createDelegateProprties(Object targetObject, String methodName, Object... parameters)
          Use this static factory method as a way of creating all the necessary properties that are required by the adapter.
 
Methods inherited from class org.picocontainer.injectors.AbstractInjectionFactory
accept, verify, wrapLifeCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegateAdaptorFactory

public DelegateAdaptorFactory()
Default constructor.

Method Detail

createComponentAdapter

public <T> ComponentAdapter<T> createComponentAdapter(ComponentMonitor componentMonitor,
                                                      LifecycleStrategy lifecycleStrategy,
                                                      Properties componentProperties,
                                                      Object componentKey,
                                                      Class<T> componentImplementation,
                                                      Parameter... parameters)
                                           throws PicoCompositionException

Throws:
PicoCompositionException

createDelegateProprties

public static Properties createDelegateProprties(Object targetObject,
                                                 String methodName,
                                                 Object... parameters)
Use this static factory method as a way of creating all the necessary properties that are required by the adapter.

Example:

                DelegateAdapterFactory factory = new DelegateAdapterFactory();
                HttpServletRequest request = .....;
 
      //When object is instantiated will lazily call:   request.getSession(false);
                Properties props = createDelegateProperties(request, "getSession", false);
 
                DelegateMethodAdapter adapter = createComponentAdapter(new ConsoleComponentMonitor(), new DefaultLifecycleStrategy(),
                                 props, HttpSession.class, HttpSession.class);
 

Parameters:
targetObject - the object to be operated on.
methodName - the name of the method to invoke.
parameters - the parameters to supply upon invocation. (Also used to find matching argument).
Returns:
the appropriate properties that can be used with createComponentAdapter().

createDelegate

public static <INSTANCE,RETURN_TYPE> DelegateMethod<INSTANCE,RETURN_TYPE> createDelegate(Class<INSTANCE> targetType,
                                                                                         String methodName,
                                                                                         Object... parameters)
Generic-friendly instantiation. If you have control of your own code, you can also just use the DelegateMethod constructors.

Type Parameters:
INSTANCE -
RETURN_TYPE -
Parameters:
targetType - the type of object being instantiated.
methodName - the method name to invoke when called.
parameters - the method paramters to use.
Returns:
DelegateMethod instance.


Copyright © 2003-2010 Codehaus. All Rights Reserved.