org.picocontainer.defaults
Class DelegatingComponentMonitor

java.lang.Object
  extended by org.picocontainer.defaults.DelegatingComponentMonitor
All Implemented Interfaces:
java.io.Serializable, ComponentMonitor, ComponentMonitorStrategy

public class DelegatingComponentMonitor
extends java.lang.Object
implements ComponentMonitor, ComponentMonitorStrategy, java.io.Serializable

A monitor which delegates to another monitor. It provides a default ComponentMonitor, but does not allow to use null for the delegate.

It also supports a monitor strategy that allows to change the delegate.

Since:
1.2
Version:
$Revision: $
Author:
Mauro Talevi
See Also:
Serialized Form

Field Summary
private  ComponentMonitor delegate
           
 
Constructor Summary
DelegatingComponentMonitor()
          Creates a DelegatingComponentMonitor with an instance of DefaultComponentMonitor.
DelegatingComponentMonitor(ComponentMonitor delegate)
          Creates a DelegatingComponentMonitor with a given delegate
 
Method Summary
 void changeMonitor(ComponentMonitor monitor)
          If the delegate supports a monitor strategy, this is used to changed the monitor while keeping the same delegate.
private  void checkMonitor(ComponentMonitor monitor)
           
 ComponentMonitor currentMonitor()
          Returns the monitor currently used
 void instantiated(java.lang.reflect.Constructor constructor, long duration)
          Event thrown after the component has been instantiated using the given constructor
 void instantiated(java.lang.reflect.Constructor constructor, java.lang.Object instantiated, java.lang.Object[] injected, long duration)
          Event thrown after the component has been instantiated using the given constructor.
 void instantiating(java.lang.reflect.Constructor constructor)
          Event thrown as the component is being instantiated using the given constructor
 void instantiationFailed(java.lang.reflect.Constructor constructor, java.lang.Exception e)
          Event thrown if the component instantiation failed using the given constructor
 void invocationFailed(java.lang.reflect.Method method, java.lang.Object instance, java.lang.Exception e)
          Event thrown if the component method invocation failed on the given instance
 void invoked(java.lang.reflect.Method method, java.lang.Object instance, long duration)
          Event thrown after the component method has been invoked on the given instance
 void invoking(java.lang.reflect.Method method, java.lang.Object instance)
          Event thrown as the component method is being invoked on the given instance
 void lifecycleInvocationFailed(java.lang.reflect.Method method, java.lang.Object instance, java.lang.RuntimeException cause)
          Event thrown if a lifecycle method invocation - start, stop or dispose - failed on the given instance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegate

private ComponentMonitor delegate
Constructor Detail

DelegatingComponentMonitor

public DelegatingComponentMonitor(ComponentMonitor delegate)
Creates a DelegatingComponentMonitor with a given delegate

Parameters:
delegate - the ComponentMonitor to which this monitor delegates

DelegatingComponentMonitor

public DelegatingComponentMonitor()
Creates a DelegatingComponentMonitor with an instance of DefaultComponentMonitor.

Method Detail

instantiating

public void instantiating(java.lang.reflect.Constructor constructor)
Description copied from interface: ComponentMonitor
Event thrown as the component is being instantiated using the given constructor

Specified by:
instantiating in interface ComponentMonitor
Parameters:
constructor - the Constructor used to instantiate the component

instantiated

public void instantiated(java.lang.reflect.Constructor constructor,
                         long duration)
Description copied from interface: ComponentMonitor
Event thrown after the component has been instantiated using the given constructor

Specified by:
instantiated in interface ComponentMonitor
Parameters:
constructor - the Constructor used to instantiate the component
duration - the duration in millis of the instantiation

instantiated

public void instantiated(java.lang.reflect.Constructor constructor,
                         java.lang.Object instantiated,
                         java.lang.Object[] injected,
                         long duration)
Description copied from interface: ComponentMonitor
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
Parameters:
constructor - the Constructor used to instantiate the component
instantiated - the component that was instantiated by PicoContainer
injected - the components during instantiation.
duration - the duration in millis of the instantiation

instantiationFailed

public void instantiationFailed(java.lang.reflect.Constructor constructor,
                                java.lang.Exception e)
Description copied from interface: ComponentMonitor
Event thrown if the component instantiation failed using the given constructor

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

invoking

public void invoking(java.lang.reflect.Method method,
                     java.lang.Object instance)
Description copied from interface: ComponentMonitor
Event thrown as the component method is being invoked on the given instance

Specified by:
invoking in interface ComponentMonitor
Parameters:
method - the Method invoked on the component instance
instance - the component instance

invoked

public void invoked(java.lang.reflect.Method method,
                    java.lang.Object instance,
                    long duration)
Description copied from interface: ComponentMonitor
Event thrown after the component method has been invoked on the given instance

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

invocationFailed

public void invocationFailed(java.lang.reflect.Method method,
                             java.lang.Object instance,
                             java.lang.Exception e)
Description copied from interface: ComponentMonitor
Event thrown if the component method invocation failed on the given instance

Specified by:
invocationFailed in interface ComponentMonitor
Parameters:
method - the Method invoked on the component instance
instance - the component instance
e - the Exception detailing the cause of the failure

lifecycleInvocationFailed

public void lifecycleInvocationFailed(java.lang.reflect.Method method,
                                      java.lang.Object instance,
                                      java.lang.RuntimeException cause)
Description copied from interface: ComponentMonitor
Event thrown if a lifecycle method invocation - start, stop or dispose - failed on the given instance

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

changeMonitor

public void changeMonitor(ComponentMonitor monitor)
If the delegate supports a monitor strategy, this is used to changed the monitor while keeping the same delegate. Else the delegate is replaced by the new monitor. Changes the component monitor used

Specified by:
changeMonitor in interface ComponentMonitorStrategy
Parameters:
monitor - the new ComponentMonitor to use

currentMonitor

public ComponentMonitor currentMonitor()
Description copied from interface: ComponentMonitorStrategy
Returns the monitor currently used

Specified by:
currentMonitor in interface ComponentMonitorStrategy
Returns:
The ComponentMonitor currently used

checkMonitor

private void checkMonitor(ComponentMonitor monitor)