Class PeriodicReloadingTrigger
A timer-based trigger for reloading checks.
An instance of this class is constructed with a reference to a ReloadingController
and a period. After
calling the start()
method a periodic task is started which calls
ReloadingController.checkForReloading(Object)
on the associated reloading controller. This way changes on a
configuration source can be detected without client code having to poll actively. The ReloadingController
will perform its checks and generates events if it detects the need for a reloading operation.
Triggering of the controller can be disabled by calling the stop()
method and later be resumed by calling
start()
again. When the trigger is no more needed its shutdown()
method should be called.
When creating an instance a ScheduledExecutorService
can be provided which is then used by the object.
Otherwise, a default executor service is created and used. When shutting down this object it can be specified whether
the ScheduledExecutorService
should be shut down, too.
- Since:
- 2.0
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ReloadingController
The associated reloading controller.private final Object
The parameter to be passed to the controller.private final ScheduledExecutorService
The executor service used by this trigger.private final long
The period.private final TimeUnit
The time unit.private ScheduledFuture<?>
Stores the future object for the current trigger task. -
Constructor Summary
ConstructorsConstructorDescriptionPeriodicReloadingTrigger
(ReloadingController ctrl, Object ctrlParam, long triggerPeriod, TimeUnit unit) Creates a new instance ofPeriodicReloadingTrigger
with a default executor service.PeriodicReloadingTrigger
(ReloadingController ctrl, Object ctrlParam, long triggerPeriod, TimeUnit unit, ScheduledExecutorService exec) Creates a new instance ofPeriodicReloadingTrigger
and sets all parameters. -
Method Summary
Modifier and TypeMethodDescriptionprivate static ScheduledExecutorService
Creates a default executor service.private Runnable
Creates the task which triggers the reloading controller.(package private) ScheduledExecutorService
Gets theScheduledExecutorService
used by this object.boolean
Returns a flag whether this trigger is currently active.void
shutdown()
Shuts down this trigger and itsScheduledExecutorService
.void
shutdown
(boolean shutdownExecutor) Shuts down this trigger and optionally shuts down theScheduledExecutorService
used by this object.void
start()
Starts this trigger.void
stop()
Stops this trigger.
-
Field Details
-
executorService
The executor service used by this trigger. -
controller
The associated reloading controller. -
controllerParam
The parameter to be passed to the controller. -
period
private final long periodThe period. -
timeUnit
The time unit. -
triggerTask
Stores the future object for the current trigger task.
-
-
Constructor Details
-
PeriodicReloadingTrigger
public PeriodicReloadingTrigger(ReloadingController ctrl, Object ctrlParam, long triggerPeriod, TimeUnit unit, ScheduledExecutorService exec) Creates a new instance ofPeriodicReloadingTrigger
and sets all parameters.- Parameters:
ctrl
- theReloadingController
(must not be null)ctrlParam
- the optional parameter to be passed to the controller when doing reloading checkstriggerPeriod
- the period in which the controller is triggeredunit
- the time unit for the periodexec
- the executor service to use (can be null, then a default executor service is created- Throws:
IllegalArgumentException
- if a required argument is missing
-
PeriodicReloadingTrigger
public PeriodicReloadingTrigger(ReloadingController ctrl, Object ctrlParam, long triggerPeriod, TimeUnit unit) Creates a new instance ofPeriodicReloadingTrigger
with a default executor service.- Parameters:
ctrl
- theReloadingController
(must not be null)ctrlParam
- the optional parameter to be passed to the controller when doing reloading checkstriggerPeriod
- the period in which the controller is triggeredunit
- the time unit for the period- Throws:
IllegalArgumentException
- if a required argument is missing
-
-
Method Details
-
start
public void start()Starts this trigger. The associatedReloadingController
will be triggered according to the specified period. The first triggering happens after a period. If this trigger is already started, this invocation has no effect. -
stop
public void stop()Stops this trigger. The associatedReloadingController
is no more triggered. If this trigger is already stopped, this invocation has no effect. -
isRunning
public boolean isRunning()Returns a flag whether this trigger is currently active.- Returns:
- a flag whether this trigger is running
-
shutdown
public void shutdown(boolean shutdownExecutor) Shuts down this trigger and optionally shuts down theScheduledExecutorService
used by this object. This method should be called if this trigger is no more needed. It ensures that the trigger is stopped. If the parameter is true, the executor service is also shut down. This should be done if this trigger is the only user of this executor service.- Parameters:
shutdownExecutor
- a flag whether the associatedScheduledExecutorService
is to be shut down
-
shutdown
public void shutdown()Shuts down this trigger and itsScheduledExecutorService
. This is a shortcut forshutdown(true)
.- See Also:
-
getExecutorService
ScheduledExecutorService getExecutorService()Gets theScheduledExecutorService
used by this object.- Returns:
- the associated
ScheduledExecutorService
-
createTriggerTaskCommand
Creates the task which triggers the reloading controller.- Returns:
- the newly created trigger task
-
createDefaultExecutorService
Creates a default executor service. This method is called if no executor has been passed to the constructor.- Returns:
- the default executor service
-