package org.jboss.seam.async; import java.io.Serializable; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; /** * Provides control over the Quartz Job. * * @author Michael Yuan * */ public class QuartzTriggerHandle implements Serializable { private final String triggerName; // Hold a transient reference to the scheduler to allow control of the // scheduler outside of Seam contexts (useful in a testing context) private transient Scheduler scheduler; public QuartzTriggerHandle(String triggerName) { this.triggerName = triggerName; } public void cancel() throws SchedulerException { getScheduler().unscheduleJob(triggerName, null); } public void pause() throws SchedulerException { getScheduler().pauseTrigger(triggerName, null); } public Trigger getTrigger() throws SchedulerException { return getScheduler().getTrigger(triggerName, null); } public void resume() throws SchedulerException { getScheduler().resumeTrigger(triggerName, null); } private Scheduler getScheduler() { if (scheduler == null) { scheduler = QuartzDispatcher.instance().getScheduler(); } return scheduler; } }