|
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.picocontainer.gems.adapters.DelegateMethodAdapter<T>
public class DelegateMethodAdapter<T>
Object construction is sometimes expensive, especially when it is seldom used
object. The goal of this adapter is to use the
DelegateMethod type to allow delayed
construction of objects.
For example, in a web application, to be able to have classes that depend on the HttpSession object, you would have to call HttpServletRequest.getSession(true). This is fine unless you don't want to create a session until you absolutely have to.
Enter DelegateMethodAdapter:
//Assumed Variables: request == HttpServletRequest.
//Typical PicoContainer
MutablePicoContainer pico = new PicoBuilder().withLifecycle().withCaching()
.build();
//Create a delegate method that will invoke HttpServletRequest.getSession(true) when invoke() is called.
DelegateMethod delegateMethod = new DelegateMethod(HttpServletRequest.class,
"getSession", true);
//Create the Adapter wrapping the delegate method.
DelegateMethodAdapter methodAdapter = new DelegateMethodAdapter(
HttpSession.class, request, delegateMethod);
pico.addAdapter(methodAdapter);
//If only executing this code, the HttpSession should not be created yet.
assertNull(request.getSession(false));
//Will get the session object by having the delegate method call HttpServletRequest.getSession(true)
HttpSession session = pico.getComponent(HttpSession.class);
assertNotNull(session);
//Should demonstrate that the session has now been created.
assertNotNull(request.getSession(false));
With an adapter like this, you can write classes like:
public class SessionUser {
public SessionUser(HttpSession session) {
//.....
}
}
With impunity, and are guaranteed that the session would not be created unless the SessionUser object was constructed.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter |
|---|
org.picocontainer.ComponentAdapter.NOTHING |
| Constructor Summary | |
|---|---|
DelegateMethodAdapter(Object componentKey,
org.picocontainer.ComponentMonitor monitor,
Object targetInstance,
DelegateMethod factoryMethod)
|
|
DelegateMethodAdapter(Object componentKey,
Object targetInstance,
DelegateMethod factoryMethod)
|
|
| Method Summary | |
|---|---|
void |
accept(org.picocontainer.PicoVisitor visitor)
|
org.picocontainer.ComponentAdapter<T> |
findAdapterOfType(Class adapterType)
|
Class<T> |
getComponentImplementation()
|
T |
getComponentInstance(org.picocontainer.PicoContainer container)
Deprecated. |
T |
getComponentInstance(org.picocontainer.PicoContainer container,
Type into)
Returns the |
Object |
getComponentKey()
|
org.picocontainer.ComponentAdapter<T> |
getDelegate()
No delegates. |
String |
getDescriptor()
|
void |
verify(org.picocontainer.PicoContainer container)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DelegateMethodAdapter(Object componentKey,
Object targetInstance,
DelegateMethod factoryMethod)
componentKey - Component - Implementation will be the expected return type of the factory
method.
public DelegateMethodAdapter(Object componentKey,
org.picocontainer.ComponentMonitor monitor,
Object targetInstance,
DelegateMethod factoryMethod)
componentKey - componentImplementation - monitor - | Method Detail |
|---|
public T getComponentInstance(org.picocontainer.PicoContainer container,
Type into)
throws org.picocontainer.PicoCompositionException
getComponentInstance in interface org.picocontainer.ComponentAdapter<T>org.picocontainer.PicoCompositionExceptionpublic String getDescriptor()
getDescriptor in interface org.picocontainer.ComponentAdapter<T>ComponentAdapter.getDescriptor()
public void verify(org.picocontainer.PicoContainer container)
throws org.picocontainer.PicoCompositionException
verify in interface org.picocontainer.ComponentAdapter<T>org.picocontainer.PicoCompositionExceptionpublic void accept(org.picocontainer.PicoVisitor visitor)
accept in interface org.picocontainer.ComponentAdapter<T>public org.picocontainer.ComponentAdapter<T> findAdapterOfType(Class adapterType)
findAdapterOfType in interface org.picocontainer.ComponentAdapter<T>public Class<T> getComponentImplementation()
getComponentImplementation in interface org.picocontainer.ComponentAdapter<T>
@Deprecated
public T getComponentInstance(org.picocontainer.PicoContainer container)
throws org.picocontainer.PicoCompositionException
getComponentInstance in interface org.picocontainer.ComponentAdapter<T>org.picocontainer.PicoCompositionExceptionpublic Object getComponentKey()
getComponentKey in interface org.picocontainer.ComponentAdapter<T>public org.picocontainer.ComponentAdapter<T> getDelegate()
getDelegate in interface org.picocontainer.ComponentAdapter<T>
|
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||