org.jboss.varia.scheduler
Class ScheduleManager

java.lang.Object
  extended byorg.jboss.mx.util.JBossNotificationBroadcasterSupport (src) 
      extended byorg.jboss.system.ServiceMBeanSupport (src) 
          extended byorg.jboss.varia.scheduler.ScheduleManager
All Implemented Interfaces:
MBeanRegistration (src) , NotificationBroadcaster (src) , NotificationEmitter (src) , Service (src) , ServiceMBean (src)

public class ScheduleManager
extends ServiceMBeanSupport (src)

Schedule Manager which manage the Schedule and their matching Timer notifications and notification listeners. Each provider has to register when it is started where in turn their startProviding() method is called which allows him to add its Schedules because the Manager is now ready.


Nested Class Summary
 class ScheduleManager.MBeanListener (src)
          This listener is waiting for its Timer Notification and call the appropriate method on the given Target (MBean) and count down the number of remaining repetitions.
 
Field Summary
static java.lang.String DEFAULT_TIMER_NAME
          Default Timer Object Name
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport (src)
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.system.ServiceMBean (src)
CREATE_EVENT, CREATED, DESTROY_EVENT, DESTROYED, FAILED, REGISTERED, START_EVENT, STARTED, STARTING, states, STOP_EVENT, STOPPED, STOPPING, UNREGISTERED
 
Constructor Summary
ScheduleManager()
          Default (no-args) Constructor
 
Method Summary
 int addSchedule(ObjectName (src)  pProvider, ObjectName (src)  pTarget, java.lang.String pMethodName, java.lang.String[] pMethodSignature, java.util.Date pStartDate, long pPeriod, int pRepetitions)
          Adds a new Schedule to the Scheduler
protected  void destroyService()
          When Service is destroyed it will call the "unregisterProvider()" on all register Providers to let them remove their Schedules and being notified that they should stop providing.
 ObjectName (src) getObjectName(MBeanServer (src)  pServer, ObjectName (src)  pName)
          Sub-classes should override this method if they only need to set their object name during MBean pre-registration.
 java.lang.String getSchedules()
          Returns a list of the identifications of all registered schedules
 java.lang.String getTimerName()
           
 boolean isPaused()
           
 boolean isStartAtStartup()
           
 boolean isStarted()
           
 void registerProvider(java.lang.String pProviderObjectName)
          Register a Provider to make him available.
 void removeSchedule(int pIdentification)
          Removes a Schedule so that no notification is sent anymore
 void restartSchedule()
          Stops the server right now and starts it right now.
 void setPaused(boolean pIsPaused)
          Pauses or restarts the Schedules which either suspends the notifications or start transfering them to the target
 void setStartAtStartup(boolean pStartAtStartup)
          Set the scheduler to start when MBean started or not.
 void setTimerName(java.lang.String pTimerName)
           
 void startSchedules()
          Starts all the containing Schedules
protected  void startService()
          Creates the requested Timer if not already available and start all added Schedules.
 void stopSchedules(boolean pDoItNow)
          Stops all the sontaining Schedules
protected  void stopService()
          Stops all available Schedules.
 void unregisterProvider(java.lang.String pProviderObjectName)
          Unregister a Provider which in turn calls "stopProviding()" indicating to the Provider to remove all the Schedules.
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport (src)
create, createService, destroy, getLog, getName, getNextNotificationSequenceNumber, getServer, getServiceName, getState, getStateString, jbossInternalCreate, jbossInternalDescription, jbossInternalDestroy, jbossInternalLifecycle, jbossInternalStart, jbossInternalStop, postDeregister, postRegister, preDeregister, preRegister, start, stop
 
Methods inherited from class org.jboss.mx.util.JBossNotificationBroadcasterSupport (src)
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_TIMER_NAME

public static java.lang.String DEFAULT_TIMER_NAME
Default Timer Object Name

Constructor Detail

ScheduleManager

public ScheduleManager()
Default (no-args) Constructor

Method Detail

startSchedules

public void startSchedules()
Starts all the containing Schedules


stopSchedules

public void stopSchedules(boolean pDoItNow)
Stops all the sontaining Schedules

Parameters:
pDoItNow - If true all the schedules are stopped immeditaly otherwise it waits until the next notification is sent

restartSchedule

public void restartSchedule()
Stops the server right now and starts it right now.


registerProvider

public void registerProvider(java.lang.String pProviderObjectName)
Register a Provider to make him available. In turn this method calls "startProviding()" method on the Provider to indicate that the Provider can start adding Schedules.

Parameters:
pProviderObjectName - Object Name of the Provider

unregisterProvider

public void unregisterProvider(java.lang.String pProviderObjectName)
Unregister a Provider which in turn calls "stopProviding()" indicating to the Provider to remove all the Schedules.

Parameters:
pProviderObjectName - Object Name of the Provider

addSchedule

public int addSchedule(ObjectName (src)  pProvider,
                       ObjectName (src)  pTarget,
                       java.lang.String pMethodName,
                       java.lang.String[] pMethodSignature,
                       java.util.Date pStartDate,
                       long pPeriod,
                       int pRepetitions)
Adds a new Schedule to the Scheduler

Parameters:
pTarget - Object Name of the Target MBean
pMethodName - Name of the method to be called
pMethodSignature - List of Attributes of the method to be called where ...
pStartDate - Date when the schedule is started
pRepetitions - Initial Number of repetitions
Returns:
Identification of the Schedule used later to remove it if necessary

removeSchedule

public void removeSchedule(int pIdentification)
Removes a Schedule so that no notification is sent anymore

Parameters:
pIdentification - Identification returned by addSchedule() or getSchedules().

getSchedules

public java.lang.String getSchedules()
Returns a list of the identifications of all registered schedules

Returns:
List of Identifications separated by a ","

isPaused

public boolean isPaused()
Returns:
True if all the Schedules are paused meaning that even when the notifications are sent to the listener they are ignored. ATTENTION: this applies to all registered Schedules and any notifications are lost during pausing

setPaused

public void setPaused(boolean pIsPaused)
Pauses or restarts the Schedules which either suspends the notifications or start transfering them to the target

Parameters:
pIsPaused - True when the Schedules are paused or false when they resumes

isStarted

public boolean isStarted()
Returns:
True if the Schedule Manager is started

isStartAtStartup

public boolean isStartAtStartup()
Returns:
True if the Schedule when the Scheduler is started

setStartAtStartup

public void setStartAtStartup(boolean pStartAtStartup)
Set the scheduler to start when MBean started or not. Note that this method only affects when the startService() gets called (normally at startup time.

Parameters:
pStartAtStartup - True if Schedule has to be started at startup time

getTimerName

public java.lang.String getTimerName()
Returns:
Name of the Timer MBean used in here

setTimerName

public void setTimerName(java.lang.String pTimerName)
Parameters:
pTimerName - Object Name of the Timer MBean to be used. If null or not a valid ObjectName the default will be used

getObjectName

public ObjectName (src)  getObjectName(MBeanServer (src)  pServer,
                                ObjectName (src)  pName)
                         throws MalformedObjectNameException (src) 
Description copied from class: ServiceMBeanSupport (src)
Sub-classes should override this method if they only need to set their object name during MBean pre-registration.

Overrides:
getObjectName in class ServiceMBeanSupport (src)
Throws:
MalformedObjectNameException (src)

destroyService

protected void destroyService()
When Service is destroyed it will call the "unregisterProvider()" on all register Providers to let them remove their Schedules and being notified that they should stop providing.

Overrides:
destroyService in class ServiceMBeanSupport (src)

startService

protected void startService()
                     throws java.lang.Exception
Creates the requested Timer if not already available and start all added Schedules. ATTENTION: the start of the schedules is not necessary when the service is started but this method is also called when the service is restarted and therefore schedules can be available.

Overrides:
startService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception

stopService

protected void stopService()
Stops all available Schedules.

Overrides:
stopService in class ServiceMBeanSupport (src)