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() ) {


Reply via email to