unico 2004/03/08 05:43:42
Modified: src/blocks/cron/java/org/apache/cocoon/components/cron
QuartzJobScheduler.java JobScheduler.java
Log:
add method to schedule a periodic job directly
Revision Changes Path
1.10 +33 -2
cocoon-2.1/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
Index: QuartzJobScheduler.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- QuartzJobScheduler.java 5 Mar 2004 13:01:49 -0000 1.9
+++ QuartzJobScheduler.java 8 Mar 2004 13:43:42 -0000 1.10
@@ -224,6 +224,36 @@
addJob(name, jobDataMap, timeEntry, canRunConcurrently, params,
objects);
}
+
+ /**
+ * Schedule a periodic job. The job is started the first time when the
period has passed. Note that if a job with
+ * the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob,
Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param period Every period seconds this job is started
+ * @param canRunConcurrently whether this job can run even previous
scheduled runs are still running
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ public void addPeriodicJob(String name, Object job, long period, boolean
canRunConcurrently, Parameters params,
+ Map objects)
+ throws CascadingException {
+ if (!(job instanceof CronJob) && !(job instanceof Runnable) && !(job
instanceof Job)) {
+ throw new CascadingException("Job object is neither an instance
of " + CronJob.class.getName() + "," +
+ Runnable.class.getName() + " nor "
+ Job.class.getName());
+ }
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_OBJECT, job);
+
+ final long ms = period * 1000;
+ final SimpleTrigger timeEntry =
+ new SimpleTrigger(name, DEFAULT_QUARTZ_JOB_GROUP, new
Date(System.currentTimeMillis() + ms), null,
+ SimpleTrigger.REPEAT_INDEFINITELY, ms);
+
+ addJob(name, jobDataMap, timeEntry, canRunConcurrently, params,
objects);
+ }
/* (non-Javadoc)
* @see
org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
@@ -743,5 +773,6 @@
}
}
}
+
}
1.7 +17 -1
cocoon-2.1/src/blocks/cron/java/org/apache/cocoon/components/cron/JobScheduler.java
Index: JobScheduler.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/cron/java/org/apache/cocoon/components/cron/JobScheduler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JobScheduler.java 5 Mar 2004 13:01:49 -0000 1.6
+++ JobScheduler.java 8 Mar 2004 13:43:42 -0000 1.7
@@ -113,6 +113,22 @@
void addPeriodicJob(String name, String jobrole, long period, boolean
canRunConcurrently, Parameters params,
Map objects)
throws CascadingException;
+
+ /**
+ * Schedule a periodic job. The job is started the first time when the
period has passed. Note that if a job with
+ * the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob,
Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param period Every period seconds this job is started
+ * @param canRunConcurrently whether this job can run even previous
scheduled runs are still running
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void addPeriodicJob(String name, Object job, long period, boolean
canRunConcurrently, Parameters params,
+ Map objects)
+ throws CascadingException;
/**
* Fire a job once immediately