You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2003/10/03 15:19:48 UTC
cvs commit: cocoon-lenya/src/java/org/apache/lenya/cms/scheduler SchedulerWrapper.java
andreas 2003/10/03 06:19:48
Modified: src/java/org/apache/lenya/cms/scheduler
SchedulerWrapper.java
Log:
when restoring jobs, check if trigger date has expired
Revision Changes Path
1.23 +45 -13 cocoon-lenya/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
Index: SchedulerWrapper.java
===================================================================
RCS file: /home/cvs/cocoon-lenya/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- SchedulerWrapper.java 29 Aug 2003 17:17:07 -0000 1.22
+++ SchedulerWrapper.java 3 Oct 2003 13:19:48 -0000 1.23
@@ -86,6 +86,8 @@
import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -214,12 +216,21 @@
JobDetail jobDetail = new JobDetail(uniqueJobId, jobGroup, jobClass);
jobDetail.setJobDataMap(map);
- if (startTime.after(new GregorianCalendar().getTime())) {
+ Date now = new GregorianCalendar().getTime();
+ if (log.isDebugEnabled()) {
+ DateFormat format = new SimpleDateFormat();
+ log.debug("Trigger time: [" + format.format(startTime) + "]");
+ log.debug("Current time: [" + format.format(now) + "]");
+ }
+
+ if (startTime.after(now)) {
Trigger trigger =
TriggerHelper.createSimpleTrigger(uniqueJobId, jobGroup, startTime);
addJob(jobDetail, trigger);
+ log.debug("Scheduling job.");
} else {
addJob(jobDetail);
+ log.debug("Adding job without scheduling.");
}
log.debug("----------------------------------------------");
@@ -553,18 +564,37 @@
ServletJob job = ServletJobFactory.createJob(jobClassName);
JobDetail jobDetail = job.load(jobElement, jobGroup, getServletContextPath());
- Element triggerElement = helper.getFirstChild(jobElement, "trigger");
+ Trigger trigger = null;
+ Element triggerElement = helper.getFirstChild(jobElement, "trigger");
if (triggerElement != null) {
- Trigger trigger =
+ trigger =
TriggerHelper.createTrigger(
triggerElement,
jobDetail.getName(),
jobDetail.getGroup());
- // FIXME: In the case of CronTrigger, getFinalFireTime does not make sense!
+ Date now = new GregorianCalendar().getTime();
+ if (log.isDebugEnabled()) {
+ DateFormat format = new SimpleDateFormat();
+ log.debug(" Trigger time: [" + format.format(trigger.getFinalFireTime()) + "]");
+ log.debug(" Current time: [" + format.format(now) + "]");
+ }
+ if (!trigger.getFinalFireTime().after(now)) {
+ trigger = null;
+ }
+ }
+
+ // FIXME: In the case of CronTrigger, getFinalFireTime does not make sense!
+ if (trigger != null) {
+ if (log.isDebugEnabled()) {
+ log.debug(" Trigger time in future - scheduling job.");
+ }
addJob(jobDetail, trigger);
} else {
+ if (log.isDebugEnabled()) {
+ log.debug(" Trigger time has expired - adding job without scheduling.");
+ }
addJob(jobDetail);
}
} catch (Exception e) {
@@ -609,24 +639,26 @@
public void modifyJob(String jobId, String jobGroup, Date startTime)
throws SchedulerException {
log.debug("Modifying job [" + jobId + "][" + jobGroup + "]");
-
+
JobDetail jobDetail = getScheduler().getJobDetail(jobId, jobGroup);
if (jobDetail == null) {
throw new SchedulerException("Job not found!");
}
-
+
Trigger trigger = getTrigger(jobDetail.getName(), jobGroup);
if (trigger == null) {
- log.debug("No trigger found.");
- }
- else {
- log.debug("Trigger found. Setting new start time.");
- getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
-
+ log.debug(" No trigger found.");
+ } else {
+ log.debug(" Trigger found. Setting new start time.");
jobDetail.setDurability(true);
if (startTime.after(new GregorianCalendar().getTime())) {
+ log.debug(" Start time is in future - re-scheduling job.");
+ getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
trigger = TriggerHelper.createSimpleTrigger(jobId, jobGroup, startTime);
getScheduler().scheduleJob(trigger);
+ } else {
+ log.debug(" Start time has already expired - deleting job.");
+ getScheduler().deleteJob(jobId, jobGroup);
}
writeSnapshot(jobGroup);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: lenya-cvs-unsubscribe@cocoon.apache.org
For additional commands, e-mail: lenya-cvs-help@cocoon.apache.org