Author: cziegeler
Date: Mon May 25 09:24:17 2009
New Revision: 778362
URL: http://svn.apache.org/viewvc?rev=778362&view=rev
Log:
SLING-984 : Register scheduler with unique name and update to latest available
quartz version.
Modified:
incubator/sling/trunk/bundles/commons/scheduler/pom.xml
incubator/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
Modified: incubator/sling/trunk/bundles/commons/scheduler/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/commons/scheduler/pom.xml?rev=778362&r1=778361&r2=778362&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/commons/scheduler/pom.xml (original)
+++ incubator/sling/trunk/bundles/commons/scheduler/pom.xml Mon May 25 09:24:17
2009
@@ -117,7 +117,7 @@
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz</artifactId>
- <version>1.6.0</version>
+ <version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
Modified:
incubator/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java?rev=778362&r1=778361&r2=778362&view=diff
==============================================================================
---
incubator/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
(original)
+++
incubator/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
Mon May 25 09:24:17 2009
@@ -20,6 +20,7 @@
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -62,6 +63,8 @@
protected static final String THREAD_POOL_NAME = "SLING_SCHEDULER";
+ protected static final String QUARTZ_SCHEDULER_NAME = "ApacheSling";
+
/** Map key for the job object */
static final String DATA_MAP_OBJECT = "QuartzJobScheduler.Object";
@@ -128,11 +131,28 @@
final SchedulerFactory factory = new StdSchedulerFactory();
this.scheduler = factory.getScheduler();
} else {
+ // create the pool
final ThreadPool pool = tpm.get(THREAD_POOL_NAME);
final QuartzThreadPool quartzPool = new QuartzThreadPool(pool);
+
final DirectSchedulerFactory factory =
DirectSchedulerFactory.getInstance();
- factory.createScheduler(quartzPool, new RAMJobStore());
- this.scheduler = factory.getScheduler();
+ // unique run id
+ final String runID = new Date().toString().replace(' ', '_');
+ factory.createScheduler(QUARTZ_SCHEDULER_NAME, runID, quartzPool,
new RAMJobStore());
+ // quartz does not provide a way to get the scheduler by name AND
runID, so we have to iterate!
+ @SuppressWarnings("unchecked")
+ final Iterator<org.quartz.Scheduler> allSchedulersIter =
factory.getAllSchedulers().iterator();
+ this.scheduler = null;
+ while ( this.scheduler == null && allSchedulersIter.hasNext() ) {
+ final org.quartz.Scheduler current = allSchedulersIter.next();
+ if ( QUARTZ_SCHEDULER_NAME.equals(current.getSchedulerName())
+ && runID.equals(current.getSchedulerInstanceId()) ) {
+ this.scheduler = current;
+ }
+ }
+ if ( this.scheduler == null ) {
+ throw new SchedulerException("Unable to find new scheduler
with name " + QUARTZ_SCHEDULER_NAME + " and run ID " + runID);
+ }
}
this.scheduler.start();
if ( this.logger.isDebugEnabled() ) {