org.picocontainer.lifecycle
Class ReflectionLifecycleStrategy

java.lang.Object
  extended by org.picocontainer.lifecycle.AbstractMonitoringLifecycleStrategy
      extended by org.picocontainer.lifecycle.ReflectionLifecycleStrategy
All Implemented Interfaces:
Serializable, ComponentMonitorStrategy, LifecycleStrategy

public class ReflectionLifecycleStrategy
extends AbstractMonitoringLifecycleStrategy

Reflection lifecycle strategy. Starts, stops, disposes of component if appropriate methods are present. The component may implement only one of the three methods.

Author:
Paul Hammant, Mauro Talevi, Jörg Schaible
See Also:
Startable, Disposable, StartableLifecycleStrategy, Serialized Form

Constructor Summary
ReflectionLifecycleStrategy(ComponentMonitor monitor)
          Construct a ReflectionLifecycleStrategy.
ReflectionLifecycleStrategy(ComponentMonitor monitor, String startMethodName, String stopMethodName, String disposeMethodName)
          Construct a ReflectionLifecycleStrategy with individual method names.
 
Method Summary
 void dispose(Object component)
          Invoke the "dispose" method on the component instance if this is disposable.
 boolean hasLifecycle(Class<?> type)
          Test if a component instance has a lifecycle.
protected  void monitorAndThrowReflectionLifecycleException(Method method, Throwable e, Object component)
           
 void start(Object component)
          Invoke the "start" method on the component instance if this is startable.
 void stop(Object component)
          Invoke the "stop" method on the component instance if this is stoppable.
 
Methods inherited from class org.picocontainer.lifecycle.AbstractMonitoringLifecycleStrategy
changeMonitor, currentMonitor, isLazy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReflectionLifecycleStrategy

public ReflectionLifecycleStrategy(ComponentMonitor monitor)
Construct a ReflectionLifecycleStrategy.

Parameters:
monitor - the monitor to use
Throws:
NullPointerException - if the monitor is null

ReflectionLifecycleStrategy

public ReflectionLifecycleStrategy(ComponentMonitor monitor,
                                   String startMethodName,
                                   String stopMethodName,
                                   String disposeMethodName)
Construct a ReflectionLifecycleStrategy with individual method names. Note, that a lifecycle method does not have any arguments.

Parameters:
monitor - the monitor to use
startMethodName - the name of the start method
stopMethodName - the name of the stop method
disposeMethodName - the name of the dispose method
Throws:
NullPointerException - if the monitor is null
Method Detail

start

public void start(Object component)
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.

Parameters:
component - the instance of the component to start

stop

public void stop(Object component)
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.

Parameters:
component - the instance of the component to stop

dispose

public void dispose(Object component)
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.

Parameters:
component - the instance of the component to dispose

monitorAndThrowReflectionLifecycleException

protected void monitorAndThrowReflectionLifecycleException(Method method,
                                                           Throwable e,
                                                           Object component)

hasLifecycle

public boolean hasLifecycle(Class<?> type)
Test if a component instance has a lifecycle. The component has a lifecycle if at least one of the three methods is present.

Parameters:
type - the component's type
Returns:
true if the component has a lifecycle


Copyright © 2003-2010 Codehaus. All Rights Reserved.