org.picocontainer.gems.containers
Class ReusablePicoContainer

java.lang.Object
  extended by org.picocontainer.DefaultPicoContainer
      extended by org.picocontainer.gems.containers.ReusablePicoContainer
All Implemented Interfaces:
Serializable, ComponentMonitorStrategy, Converting, Disposable, MutablePicoContainer, PicoContainer, Startable

public class ReusablePicoContainer
extends DefaultPicoContainer

Normal PicoContainers are meant to be created, started, stopped, disposed and garbage collected. The goal of this container is to reduce the number of registration calls (and therefore objects created) in areas where performance is key (for example, this might be used in NanoContainer request containers).

It accomplishes its goal in two ways:
(1) Once a container is disposed of, start() may be called again, allowing for recycling of the container. (This is default behavior with a picocontainer)

(2) All instance registrations will be unregistered when stop is called. (For example, HttpServletRequest would be removed), and all component adapter instance values are flushed.

Container Storage

It is still up to the builder of this container to decide where to store its reference. Since it is reusable, it needs to be stored someplace that doesn't easily expire. Probably the most common storage location would be ThreadLocal storage. HttpSession might be another valid storage location.

Author:
Michael Rimov
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.picocontainer.DefaultPicoContainer
DefaultPicoContainer.KnowsContainerAdapter<T>, DefaultPicoContainer.LateInstance
 
Field Summary
 
Fields inherited from class org.picocontainer.DefaultPicoContainer
componentFactory, componentMonitor, lifecycleStrategy, orderedComponentAdapters
 
Constructor Summary
ReusablePicoContainer()
           
ReusablePicoContainer(ComponentFactory componentFactory)
           
ReusablePicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
           
ReusablePicoContainer(ComponentFactory componentFactory, LifecycleStrategy lifecycleStrategy, PicoContainer parent, ComponentMonitor componentMonitor)
           
ReusablePicoContainer(ComponentFactory componentFactory, PicoContainer parent)
           
ReusablePicoContainer(ComponentMonitor monitor)
           
ReusablePicoContainer(ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy, PicoContainer parent)
           
ReusablePicoContainer(ComponentMonitor monitor, PicoContainer parent)
           
ReusablePicoContainer(LifecycleStrategy lifecycleStrategy, PicoContainer parent)
           
ReusablePicoContainer(PicoContainer parent)
           
 
Method Summary
 MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter)
           
 MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter, Properties properties)
           
 MutablePicoContainer addComponent(Object implOrInstance)
           
 MutablePicoContainer addComponent(Object componentKey, Object componentImplementationOrInstance, Parameter... parameters)
           
 MutablePicoContainer makeChildContainer()
           
<T> ComponentAdapter<T>
removeComponent(Object componentKey)
           
<T> ComponentAdapter<T>
removeComponentByInstance(T componentInstance)
           
 void stop()
           
 
Methods inherited from class org.picocontainer.DefaultPicoContainer
accept, addAdapterInternal, addChildContainer, addConfig, as, change, changeMonitor, currentMonitor, decorateComponent, dispose, getComponent, getComponent, getComponent, getComponent, getComponent, getComponentAdapter, getComponentAdapter, getComponentAdapter, getComponentAdapters, getComponentAdapters, getComponentAdapters, getComponentKeyToAdapterCache, getComponents, getComponents, getConverters, getModifiableComponentAdapterList, getOrderedComponentAdapters, getParent, instantiateComponentAsIsStartable, potentiallyStartAdapter, removeChildContainer, setLifecycleState, setName, start, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ReusablePicoContainer

public ReusablePicoContainer()

ReusablePicoContainer

public ReusablePicoContainer(ComponentFactory componentFactory,
                             LifecycleStrategy lifecycleStrategy,
                             PicoContainer parent,
                             ComponentMonitor componentMonitor)

ReusablePicoContainer

public ReusablePicoContainer(ComponentFactory componentFactory,
                             LifecycleStrategy lifecycleStrategy,
                             PicoContainer parent)

ReusablePicoContainer

public ReusablePicoContainer(ComponentFactory componentFactory,
                             PicoContainer parent)

ReusablePicoContainer

public ReusablePicoContainer(ComponentFactory componentFactory)

ReusablePicoContainer

public ReusablePicoContainer(ComponentMonitor monitor,
                             LifecycleStrategy lifecycleStrategy,
                             PicoContainer parent)

ReusablePicoContainer

public ReusablePicoContainer(ComponentMonitor monitor,
                             PicoContainer parent)

ReusablePicoContainer

public ReusablePicoContainer(ComponentMonitor monitor)

ReusablePicoContainer

public ReusablePicoContainer(LifecycleStrategy lifecycleStrategy,
                             PicoContainer parent)

ReusablePicoContainer

public ReusablePicoContainer(PicoContainer parent)
Method Detail

addComponent

public MutablePicoContainer addComponent(Object componentKey,
                                         Object componentImplementationOrInstance,
                                         Parameter... parameters)
                                  throws PicoCompositionException
Specified by:
addComponent in interface MutablePicoContainer
Overrides:
addComponent in class DefaultPicoContainer
Throws:
PicoCompositionException

addComponent

public MutablePicoContainer addComponent(Object implOrInstance)
                                  throws PicoCompositionException
Specified by:
addComponent in interface MutablePicoContainer
Overrides:
addComponent in class DefaultPicoContainer
Throws:
PicoCompositionException

stop

public void stop()
Specified by:
stop in interface Startable
Overrides:
stop in class DefaultPicoContainer

addAdapter

public MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter,
                                       Properties properties)
Overrides:
addAdapter in class DefaultPicoContainer

addAdapter

public MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter)
Specified by:
addAdapter in interface MutablePicoContainer
Overrides:
addAdapter in class DefaultPicoContainer

removeComponent

public <T> ComponentAdapter<T> removeComponent(Object componentKey)
Specified by:
removeComponent in interface MutablePicoContainer
Overrides:
removeComponent in class DefaultPicoContainer

removeComponentByInstance

public <T> ComponentAdapter<T> removeComponentByInstance(T componentInstance)
Specified by:
removeComponentByInstance in interface MutablePicoContainer
Overrides:
removeComponentByInstance in class DefaultPicoContainer

makeChildContainer

public MutablePicoContainer makeChildContainer()
Specified by:
makeChildContainer in interface MutablePicoContainer
Overrides:
makeChildContainer in class DefaultPicoContainer


Copyright © 2003-2010 Codehaus. All Rights Reserved.