org.picocontainer.gems.containers
Class Log4jTracingContainerDecorator

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

public class Log4jTracingContainerDecorator
extends Object
implements MutablePicoContainer, Serializable

Decorates a MutablePicoContainer to provide extensive tracing capabilities for all function calls into the Picocontainers.

By default, this class uses org.picocontainer.PicoContainer as its logging category, however, this may be changed by providing the logger in its alternate constructor.

Start and Stop events are logged under info priority, as are all conditions where querying for an object returns a null object (e.g., getComponentAdapter(Object) returns null). All other functions use debug priority.

If used in nanocontainer, you can add wrap your PicoContainer with the Log4jTracingContainerDecorator: (Groovy Example)

                pico = builder.container(parent: parent) {
                        //component(.....)
                        //And others.
                }
 
                //Wrap the underlying NanoContainer with a Decorated Pico.
                pico = new org.picocontainer.gems.containers.Log4jTracingContainerDecorator (pico.getPico())
 

Since:
Version 1.3
Author:
Michael Rimov
See Also:
Serialized Form

Constructor Summary
Log4jTracingContainerDecorator(MutablePicoContainer delegate)
          Default typical wrapper that wraps another MutablePicoContainer.
Log4jTracingContainerDecorator(MutablePicoContainer delegate, org.apache.log4j.Logger logger)
          Alternate constructor that allows specification of the Logger to use.
 
Method Summary
 void accept(PicoVisitor visitor)
          
 boolean addChildContainer(PicoContainer child)
          
 void dispose()
          
 ComponentAdapter getComponentAdapter(Object componentKey)
          
 ComponentAdapter getComponentAdapterOfType(Class componentType)
          
 Collection getComponentAdapters()
          
 List getComponentAdaptersOfType(Class componentType)
          
 Object getComponentInstance(Object componentKey)
          
 Object getComponentInstanceOfType(Class componentType)
          
 List getComponentInstances()
          
 List getComponentInstancesOfType(Class componentType)
          
 org.apache.log4j.Logger getLoggerUsed()
          Retrieves the logger instance used by this decorator.
 PicoContainer getParent()
          
 MutablePicoContainer makeChildContainer()
          
protected  void onKeyDoesntExistInContainer(Object componentKey, org.apache.log4j.Logger target)
          Standard message handling for cases when a null object is returned for a given key.
 ComponentAdapter registerComponent(ComponentAdapter componentAdapter)
          
 ComponentAdapter registerComponentImplementation(Class componentImplementation)
          
 ComponentAdapter registerComponentImplementation(Object componentKey, Class componentImplementation)
          
 ComponentAdapter registerComponentImplementation(Object componentKey, Class componentImplementation, Parameter[] parameters)
          
 ComponentAdapter registerComponentInstance(Object componentInstance)
          
 ComponentAdapter registerComponentInstance(Object componentKey, Object componentInstance)
          
 boolean removeChildContainer(PicoContainer child)
          
 void start()
          
 void stop()
          
 ComponentAdapter unregisterComponent(Object componentKey)
          
 ComponentAdapter unregisterComponentByInstance(Object componentInstance)
          
 void verify()
          Deprecated.  
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Log4jTracingContainerDecorator

public Log4jTracingContainerDecorator(MutablePicoContainer delegate)
Default typical wrapper that wraps another MutablePicoContainer.

Parameters:
delegate - Container to be decorated.
Throws:
NullPointerException - if delegate is null.

Log4jTracingContainerDecorator

public Log4jTracingContainerDecorator(MutablePicoContainer delegate,
                                      org.apache.log4j.Logger logger)
Alternate constructor that allows specification of the Logger to use.

Parameters:
delegate - Container to be decorated.
logger - specific Log4j Logger to use.
Throws:
NullPointerException - if delegate or logger is null.
Method Detail

onKeyDoesntExistInContainer

protected void onKeyDoesntExistInContainer(Object componentKey,
                                           org.apache.log4j.Logger target)
Standard message handling for cases when a null object is returned for a given key.

Parameters:
componentKey -
target -

accept

public void accept(PicoVisitor visitor)

Specified by:
accept in interface PicoContainer
Parameters:
visitor -
See Also:
PicoContainer.accept(org.picocontainer.PicoVisitor)

addChildContainer

public boolean addChildContainer(PicoContainer child)

Specified by:
addChildContainer in interface MutablePicoContainer
Parameters:
child -
Returns:
See Also:
MutablePicoContainer.addChildContainer(org.picocontainer.PicoContainer)

dispose

public void dispose()

Specified by:
dispose in interface Disposable
See Also:
Disposable.dispose()

getComponentAdapter

public ComponentAdapter getComponentAdapter(Object componentKey)

Specified by:
getComponentAdapter in interface PicoContainer
Parameters:
componentKey -
Returns:
See Also:
PicoContainer.getComponentAdapter(java.lang.Object)

getComponentAdapterOfType

public ComponentAdapter getComponentAdapterOfType(Class componentType)

Specified by:
getComponentAdapterOfType in interface PicoContainer
Parameters:
componentType -
Returns:
ComponentAdapter or null.
See Also:
PicoContainer.getComponentAdapterOfType(java.lang.Class)

getComponentAdapters

public Collection getComponentAdapters()

Specified by:
getComponentAdapters in interface PicoContainer
Returns:
Collection or null.
See Also:
PicoContainer.getComponentAdapters()

getComponentAdaptersOfType

public List getComponentAdaptersOfType(Class componentType)

Specified by:
getComponentAdaptersOfType in interface PicoContainer
Parameters:
componentType -
Returns:
List of ComponentAdapters
See Also:
PicoContainer.getComponentAdaptersOfType(java.lang.Class)

getComponentInstance

public Object getComponentInstance(Object componentKey)

Specified by:
getComponentInstance in interface PicoContainer
Parameters:
componentKey -
Returns:
See Also:
PicoContainer.getComponentInstance(java.lang.Object)

getComponentInstanceOfType

public Object getComponentInstanceOfType(Class componentType)

Specified by:
getComponentInstanceOfType in interface PicoContainer
Parameters:
componentType -
Returns:
See Also:
PicoContainer.getComponentInstanceOfType(java.lang.Class)

getComponentInstances

public List getComponentInstances()

Specified by:
getComponentInstances in interface PicoContainer
Returns:
See Also:
PicoContainer.getComponentInstances()

getComponentInstancesOfType

public List getComponentInstancesOfType(Class componentType)

Specified by:
getComponentInstancesOfType in interface PicoContainer
Parameters:
componentType -
Returns:
See Also:
PicoContainer.getComponentInstancesOfType(java.lang.Class)

getParent

public PicoContainer getParent()

Specified by:
getParent in interface PicoContainer
Returns:
See Also:
PicoContainer.getParent()

makeChildContainer

public MutablePicoContainer makeChildContainer()

Specified by:
makeChildContainer in interface MutablePicoContainer
Returns:
See Also:
MutablePicoContainer.makeChildContainer()

registerComponent

public ComponentAdapter registerComponent(ComponentAdapter componentAdapter)

Specified by:
registerComponent in interface MutablePicoContainer
Parameters:
componentAdapter -
Returns:
See Also:
MutablePicoContainer.registerComponent(org.picocontainer.ComponentAdapter)

registerComponentImplementation

public ComponentAdapter registerComponentImplementation(Class componentImplementation)

Specified by:
registerComponentImplementation in interface MutablePicoContainer
Parameters:
componentImplementation -
Returns:
See Also:
MutablePicoContainer.registerComponentImplementation(java.lang.Class)

registerComponentImplementation

public ComponentAdapter registerComponentImplementation(Object componentKey,
                                                        Class componentImplementation,
                                                        Parameter[] parameters)

Specified by:
registerComponentImplementation in interface MutablePicoContainer
Parameters:
componentKey -
componentImplementation -
parameters -
Returns:
See Also:
MutablePicoContainer.registerComponentImplementation(java.lang.Object, java.lang.Class, org.picocontainer.Parameter[])

registerComponentImplementation

public ComponentAdapter registerComponentImplementation(Object componentKey,
                                                        Class componentImplementation)

Specified by:
registerComponentImplementation in interface MutablePicoContainer
Parameters:
componentKey -
componentImplementation -
Returns:
See Also:
MutablePicoContainer.registerComponentImplementation(java.lang.Object, java.lang.Class)

registerComponentInstance

public ComponentAdapter registerComponentInstance(Object componentKey,
                                                  Object componentInstance)

Specified by:
registerComponentInstance in interface MutablePicoContainer
Parameters:
componentKey -
componentInstance -
Returns:
See Also:
MutablePicoContainer.registerComponentInstance(java.lang.Object, java.lang.Object)

registerComponentInstance

public ComponentAdapter registerComponentInstance(Object componentInstance)

Specified by:
registerComponentInstance in interface MutablePicoContainer
Parameters:
componentInstance -
Returns:
See Also:
MutablePicoContainer.registerComponentInstance(java.lang.Object)

removeChildContainer

public boolean removeChildContainer(PicoContainer child)

Specified by:
removeChildContainer in interface MutablePicoContainer
Parameters:
child -
Returns:
See Also:
MutablePicoContainer.removeChildContainer(org.picocontainer.PicoContainer)

start

public void start()

Specified by:
start in interface Startable
See Also:
Startable.start()

stop

public void stop()

Specified by:
stop in interface Startable
See Also:
Startable.stop()

unregisterComponent

public ComponentAdapter unregisterComponent(Object componentKey)

Specified by:
unregisterComponent in interface MutablePicoContainer
Parameters:
componentKey -
Returns:
See Also:
MutablePicoContainer.unregisterComponent(java.lang.Object)

unregisterComponentByInstance

public ComponentAdapter unregisterComponentByInstance(Object componentInstance)

Specified by:
unregisterComponentByInstance in interface MutablePicoContainer
Parameters:
componentInstance -
Returns:
See Also:
MutablePicoContainer.unregisterComponentByInstance(java.lang.Object)

verify

public void verify()
            throws PicoVerificationException
Deprecated. 

Specified by:
verify in interface PicoContainer
Throws:
PicoVerificationException
See Also:
PicoContainer.verify()

getLoggerUsed

public org.apache.log4j.Logger getLoggerUsed()
Retrieves the logger instance used by this decorator.

Returns:
Logger instance.


Copyright © 2003-2010 Codehaus. All Rights Reserved.