Package org.picocontainer.adapters
Class InstanceAdapter<T>
- java.lang.Object
-
- org.picocontainer.adapters.AbstractAdapter<T>
-
- org.picocontainer.adapters.InstanceAdapter<T>
-
- All Implemented Interfaces:
java.io.Serializable
,ComponentAdapter<T>
,ComponentLifecycle<T>
,ComponentMonitorStrategy
,LifecycleStrategy
public final class InstanceAdapter<T> extends AbstractAdapter<T> implements ComponentLifecycle<T>, LifecycleStrategy
Component adapter which wraps a component instance.
This component adapter supports both a
Behavior
and aLifecycleStrategy
to control the lifecycle of the component. The lifecycle manager methods simply delegate to the lifecycle strategy methods on the component instance.- Author:
- Aslak Hellesøy, Paul Hammant, Mauro Talevi
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING
-
-
Constructor Summary
Constructors Constructor Description InstanceAdapter(java.lang.Object componentKey, T componentInstance)
InstanceAdapter(java.lang.Object componentKey, T componentInstance, ComponentMonitor componentMonitor)
InstanceAdapter(java.lang.Object componentKey, T componentInstance, LifecycleStrategy lifecycleStrategy)
InstanceAdapter(java.lang.Object componentKey, T componentInstance, LifecycleStrategy lifecycleStrategy, ComponentMonitor componentMonitor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
componentHasLifecycle()
Test if a component honors a lifecycle.void
dispose(java.lang.Object component)
Invoke the "dispose" method on the component instance if this is disposable.void
dispose(PicoContainer container)
Invoke the "dispose" method on the component.T
getComponentInstance(PicoContainer container, java.lang.reflect.Type into)
Retrieve the component instance.java.lang.String
getDescriptor()
Get a string key descriptor of the component adapter for use in toString()boolean
hasLifecycle(java.lang.Class<?> type)
Test if a component instance has a lifecycle.boolean
isLazy(ComponentAdapter<?> adapter)
Is a component eager (not lazy) in that it should start when start() or equivalent is called, or lazy (it will only start on first getComponent() ).boolean
isStarted()
void
start(java.lang.Object component)
Invoke the "start" method on the component instance if this is startable.void
start(PicoContainer container)
Invoke the "start" method on the component.void
stop(java.lang.Object component)
Invoke the "stop" method on the component instance if this is stoppable.void
stop(PicoContainer container)
Invoke the "stop" method on the component.java.lang.String
toString()
void
verify(PicoContainer container)
Verify that all dependencies for this adapter can be satisfied.-
Methods inherited from class org.picocontainer.adapters.AbstractAdapter
accept, changeMonitor, checkTypeCompatibility, currentMonitor, findAdapterOfType, getComponentImplementation, getComponentInstance, getComponentKey, getDelegate
-
-
-
-
Constructor Detail
-
InstanceAdapter
public InstanceAdapter(java.lang.Object componentKey, T componentInstance, LifecycleStrategy lifecycleStrategy, ComponentMonitor componentMonitor) throws PicoCompositionException
- Throws:
PicoCompositionException
-
InstanceAdapter
public InstanceAdapter(java.lang.Object componentKey, T componentInstance)
-
InstanceAdapter
public InstanceAdapter(java.lang.Object componentKey, T componentInstance, LifecycleStrategy lifecycleStrategy)
-
InstanceAdapter
public InstanceAdapter(java.lang.Object componentKey, T componentInstance, ComponentMonitor componentMonitor)
-
-
Method Detail
-
getComponentInstance
public T getComponentInstance(PicoContainer container, java.lang.reflect.Type into)
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 interfaceComponentAdapter<T>
- Parameters:
container
- thePicoContainer
, 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.
-
verify
public void verify(PicoContainer container)
Description copied from interface:ComponentAdapter
Verify that all dependencies for this adapter can be satisfied. Normally, the adapter should verify this by checking that the associated PicoContainer contains all the needed dependencies.- Specified by:
verify
in interfaceComponentAdapter<T>
- Parameters:
container
- thePicoContainer
, that is used to resolve any possible dependencies of the instance.
-
getDescriptor
public java.lang.String getDescriptor()
Description copied from interface:ComponentAdapter
Get a string key descriptor of the component adapter for use in toString()- Specified by:
getDescriptor
in interfaceComponentAdapter<T>
- Returns:
- the descriptor
-
toString
public java.lang.String toString()
- Overrides:
toString
in classAbstractAdapter<T>
- Returns:
- Returns the ComponentAdapter's class name and the component's key.
- See Also:
Object.toString()
-
start
public void start(PicoContainer container)
Description copied from interface:ComponentLifecycle
Invoke the "start" method on the component.- Specified by:
start
in interfaceComponentLifecycle<T>
- Parameters:
container
- the container to "start" the component
-
stop
public void stop(PicoContainer container)
Description copied from interface:ComponentLifecycle
Invoke the "stop" method on the component.- Specified by:
stop
in interfaceComponentLifecycle<T>
- Parameters:
container
- the container to "stop" the component
-
dispose
public void dispose(PicoContainer container)
Description copied from interface:ComponentLifecycle
Invoke the "dispose" method on the component.- Specified by:
dispose
in interfaceComponentLifecycle<T>
- Parameters:
container
- the container to "dispose" the component
-
componentHasLifecycle
public boolean componentHasLifecycle()
Description copied from interface:ComponentLifecycle
Test if a component honors a lifecycle.- Specified by:
componentHasLifecycle
in interfaceComponentLifecycle<T>
- Returns:
true
if the component has a lifecycle
-
isStarted
public boolean isStarted()
- Specified by:
isStarted
in interfaceComponentLifecycle<T>
-
start
public void start(java.lang.Object component)
Description copied from interface:LifecycleStrategy
Invoke the "start" method on the component instance if this is startable. It is up to the implementation of the strategy what "start" and "startable" means.- Specified by:
start
in interfaceLifecycleStrategy
- Parameters:
component
- the instance of the component to start
-
stop
public void stop(java.lang.Object component)
Description copied from interface:LifecycleStrategy
Invoke the "stop" method on the component instance if this is stoppable. It is up to the implementation of the strategy what "stop" and "stoppable" means.- Specified by:
stop
in interfaceLifecycleStrategy
- Parameters:
component
- the instance of the component to stop
-
dispose
public void dispose(java.lang.Object component)
Description copied from interface:LifecycleStrategy
Invoke the "dispose" method on the component instance if this is disposable. It is up to the implementation of the strategy what "dispose" and "disposable" means.- Specified by:
dispose
in interfaceLifecycleStrategy
- Parameters:
component
- the instance of the component to dispose
-
hasLifecycle
public boolean hasLifecycle(java.lang.Class<?> type)
Description copied from interface:LifecycleStrategy
Test if a component instance has a lifecycle.- Specified by:
hasLifecycle
in interfaceLifecycleStrategy
- Parameters:
type
- the component's type- Returns:
true
if the component has a lifecycle
-
isLazy
public boolean isLazy(ComponentAdapter<?> adapter)
Description copied from interface:LifecycleStrategy
Is a component eager (not lazy) in that it should start when start() or equivalent is called, or lazy (it will only start on first getComponent() ). The default is the first of those two.- Specified by:
isLazy
in interfaceLifecycleStrategy
- Returns:
- true if lazy, false if not lazy
-
-