org.picocontainer.gems.monitors
Class CommonsLoggingComponentMonitor

java.lang.Object
  extended by org.picocontainer.gems.monitors.CommonsLoggingComponentMonitor
All Implemented Interfaces:
Serializable, ComponentMonitor

public class CommonsLoggingComponentMonitor
extends Object
implements ComponentMonitor, Serializable

A ComponentMonitor which writes to a Commons Logging Log instance. The Log instance can either be injected or, if not set, the LogFactory will be used to retrieve it at every invocation of the monitor.

Note on Serialization

Commons Logging does not guarantee Serialization. It is supported when using Log4j as a back end, but you should write a test case to determine if your particular logger implementation is supported if you plan on serializing this ComponentMonitor.

Author:
Paul Hammant, Mauro Talevi
See Also:
Serialized Form

Constructor Summary
CommonsLoggingComponentMonitor()
          Creates a CommonsLoggingComponentMonitor with no Log instance set.
CommonsLoggingComponentMonitor(Class<?> logClass)
          Creates a CommonsLoggingComponentMonitor with a given Log instance class.
CommonsLoggingComponentMonitor(Class<?> logClass, ComponentMonitor delegate)
          Creates a CommonsLoggingComponentMonitor with a given Log instance class.
CommonsLoggingComponentMonitor(Log log)
          Creates a CommonsLoggingComponentMonitor with a given Log instance
CommonsLoggingComponentMonitor(Log log, ComponentMonitor delegate)
          Creates a CommonsLoggingComponentMonitor with a given Log instance.
CommonsLoggingComponentMonitor(String logName)
          Creates a CommonsLoggingComponentMonitor with a given Log instance name.
CommonsLoggingComponentMonitor(String logName, ComponentMonitor delegate)
          Creates a CommonsLoggingComponentMonitor with a given Log instance name.
 
Method Summary
protected  Log getLog(Member member)
          Retrieves the logger appropriate for the calling member's class.
<T> void
instantiated(PicoContainer container, ComponentAdapter<T> componentAdapter, Constructor<T> constructor, Object instantiated, Object[] parameters, long duration)
          Event thrown after the component has been instantiated using the given constructor.
<T> Constructor<T>
instantiating(PicoContainer container, ComponentAdapter<T> componentAdapter, Constructor<T> constructor)
          Event thrown as the component is being instantiated using the given constructor
<T> void
instantiationFailed(PicoContainer container, ComponentAdapter<T> componentAdapter, Constructor<T> constructor, Exception cause)
          Event thrown if the component instantiation failed using the given constructor
 void invocationFailed(Member member, Object instance, Exception cause)
          Event thrown if the component method invocation failed on the given instance
 void invoked(PicoContainer container, ComponentAdapter<?> componentAdapter, Method method, Object instance, long duration)
          Event thrown after the component method has been invoked on the given instance
 void invoking(PicoContainer container, ComponentAdapter<?> componentAdapter, Member member, Object instance)
          Event thrown as the component method is being invoked on the given instance
 void lifecycleInvocationFailed(MutablePicoContainer container, ComponentAdapter<?> componentAdapter, Method method, Object instance, RuntimeException cause)
          Event thrown if a lifecycle method invocation - start, stop or dispose - failed on the given instance
 AbstractInjector newInjectionFactory(AbstractInjector abstractInjector)
          A mechanism to monitor or override the AbstractInjectors being made for components.
 Object noComponentFound(MutablePicoContainer container, Object componentKey)
          No Component has been found for the key in question.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor()
Creates a CommonsLoggingComponentMonitor with no Log instance set. The LogFactory will be used to retrieve the Log instance at every invocation of the monitor.


CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(Class<?> logClass)
Creates a CommonsLoggingComponentMonitor with a given Log instance class. The class name is used to retrieve the Log instance.

Parameters:
logClass - the class of the Log

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(String logName)
Creates a CommonsLoggingComponentMonitor with a given Log instance name. It uses the LogFactory to create the Log instance.

Parameters:
logName - the name of the Log

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(Log log)
Creates a CommonsLoggingComponentMonitor with a given Log instance

Parameters:
log - the Log to write to

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(Class<?> logClass,
                                      ComponentMonitor delegate)
Creates a CommonsLoggingComponentMonitor with a given Log instance class. The class name is used to retrieve the Log instance.

Parameters:
logClass - the class of the Log
delegate - the delegate

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(String logName,
                                      ComponentMonitor delegate)
Creates a CommonsLoggingComponentMonitor with a given Log instance name. It uses the LogFactory to create the Log instance.

Parameters:
logName - the name of the Log
delegate - the delegate

CommonsLoggingComponentMonitor

public CommonsLoggingComponentMonitor(Log log,
                                      ComponentMonitor delegate)
Creates a CommonsLoggingComponentMonitor with a given Log instance.

Parameters:
log - the Log with which to write events.
delegate - the delegate
Method Detail

instantiating

public <T> Constructor<T> instantiating(PicoContainer container,
                                        ComponentAdapter<T> componentAdapter,
                                        Constructor<T> constructor)
Event thrown as the component is being instantiated using the given constructor

Specified by:
instantiating in interface ComponentMonitor
constructor - the Constructor used to instantiate the addComponent @return the constructor to use in instantiation (nearly always the same one as passed in)

instantiated

public <T> void instantiated(PicoContainer container,
                             ComponentAdapter<T> componentAdapter,
                             Constructor<T> constructor,
                             Object instantiated,
                             Object[] parameters,
                             long duration)
Event thrown after the component has been instantiated using the given constructor. This should be called for both Constructor and Setter DI.

Specified by:
instantiated in interface ComponentMonitor
constructor - the Constructor used to instantiate the addComponent
instantiated - the component that was instantiated by PicoContainer
parameters - the components during instantiation.
duration - the duration in milliseconds of the instantiation

instantiationFailed

public <T> void instantiationFailed(PicoContainer container,
                                    ComponentAdapter<T> componentAdapter,
                                    Constructor<T> constructor,
                                    Exception cause)
Event thrown if the component instantiation failed using the given constructor

Specified by:
instantiationFailed in interface ComponentMonitor
constructor - the Constructor used to instantiate the addComponent
cause - the Exception detailing the cause of the failure

invoking

public void invoking(PicoContainer container,
                     ComponentAdapter<?> componentAdapter,
                     Member member,
                     Object instance)
Event thrown as the component method is being invoked on the given instance

Specified by:
invoking in interface ComponentMonitor
instance - the component instance

invoked

public void invoked(PicoContainer container,
                    ComponentAdapter<?> componentAdapter,
                    Method method,
                    Object instance,
                    long duration)
Event thrown after the component method has been invoked on the given instance

Specified by:
invoked in interface ComponentMonitor
method - the Method invoked on the component instance
instance - the component instance
duration - the duration in millis of the invocation

invocationFailed

public void invocationFailed(Member member,
                             Object instance,
                             Exception cause)
Event thrown if the component method invocation failed on the given instance

Specified by:
invocationFailed in interface ComponentMonitor
instance - the component instance
cause - the Exception detailing the cause of the failure

lifecycleInvocationFailed

public void lifecycleInvocationFailed(MutablePicoContainer container,
                                      ComponentAdapter<?> componentAdapter,
                                      Method method,
                                      Object instance,
                                      RuntimeException cause)
Event thrown if a lifecycle method invocation - start, stop or dispose - failed on the given instance

Specified by:
lifecycleInvocationFailed in interface ComponentMonitor
method - the lifecycle Method invoked on the component instance
instance - the component instance
cause - the RuntimeException detailing the cause of the failure

noComponentFound

public Object noComponentFound(MutablePicoContainer container,
                               Object componentKey)
No Component has been found for the key in question. Implementors of this have a last ditch opportunity to specify something for the need.

Specified by:
noComponentFound in interface ComponentMonitor

newInjectionFactory

public AbstractInjector newInjectionFactory(AbstractInjector abstractInjector)
A mechanism to monitor or override the AbstractInjectors being made for components.

Specified by:
newInjectionFactory in interface ComponentMonitor
Parameters:
abstractInjector - the abstract injector the container intends to use for the component currently being added.
Returns:
an abstract Injector. For most implementations, the same one as was passed in.

getLog

protected Log getLog(Member member)
Retrieves the logger appropriate for the calling member's class.

Parameters:
member - constructor/method/field who's callback is required.
Returns:
the Commons logging instance.


Copyright © 2003-2010 Codehaus. All Rights Reserved.