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)
          Create a new component adapter based on the specified arguments.
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
 
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
Create a new component adapter based on the specified arguments.

Parameters:
componentMonitor - the component monitor
lifecycleStrategy - te lifecycle strategy
componentProperties - the component properties
componentKey - the key to be associated with this adapter. This value should be returned from a call to ComponentAdapter.getComponentKey() on the created adapter.
componentImplementation - the implementation class to be associated with this adapter. This value should be returned from a call to ComponentAdapter.getComponentImplementation() on the created adapter. Should not be null.
parameters - additional parameters to use by the component adapter in constructing component instances. These may be used, for example, to make decisions about the arguments passed into the component constructor. These should be considered hints; they may be ignored by some implementations. May be null, and may be of zero length.
Returns:
a new component adapter based on the specified arguments. Should not return null.
Throws:
PicoCompositionException - if the creation of the component adapter results in a 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.