You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/12/17 15:19:29 UTC

svn commit: r1720554 - in /sling/trunk/bundles/commons/scheduler: pom.xml src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java

Author: cziegeler
Date: Thu Dec 17 14:19:28 2015
New Revision: 1720554

URL: http://svn.apache.org/viewvc?rev=1720554&view=rev
Log:
SLING-5381 : NPE in QuartzScheduler

Modified:
    sling/trunk/bundles/commons/scheduler/pom.xml
    sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java

Modified: sling/trunk/bundles/commons/scheduler/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler/pom.xml?rev=1720554&r1=1720553&r2=1720554&view=diff
==============================================================================
--- sling/trunk/bundles/commons/scheduler/pom.xml (original)
+++ sling/trunk/bundles/commons/scheduler/pom.xml Thu Dec 17 14:19:28 2015
@@ -182,7 +182,7 @@
         <dependency>
             <groupId>org.quartz-scheduler</groupId>
             <artifactId>quartz</artifactId>
-            <version>2.2.1</version>
+            <version>2.2.2</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

Modified: sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java?rev=1720554&r1=1720553&r2=1720554&view=diff
==============================================================================
--- sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java (original)
+++ sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java Thu Dec 17 14:19:28 2015
@@ -144,6 +144,7 @@ public class QuartzScheduler implements
     /**
      * @see org.osgi.framework.BundleListener#bundleChanged(org.osgi.framework.BundleEvent)
      */
+    @Override
     public void bundleChanged(final BundleEvent event) {
         if ( event.getType() == BundleEvent.STOPPED ) {
             final Long bundleId = event.getBundle().getBundleId();
@@ -157,14 +158,16 @@ public class QuartzScheduler implements
                             final Set<JobKey> keys = s.getJobKeys(GroupMatcher.jobGroupEquals(group));
                             for(final JobKey key : keys) {
                                 final JobDetail detail = s.getJobDetail(key);
-                                final String jobName = (String) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_NAME);
-                                final Object job = detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_OBJECT);
-
-                                if ( jobName != null && job != null ) {
-                                    final Long jobBundleId = (Long) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_BUNDLE_ID);
-                                    if ( jobBundleId != null && jobBundleId.equals(bundleId) ) {
-                                        s.deleteJob(key);
-                                        this.logger.debug("Unscheduling job with name {}", jobName);
+                                if ( detail != null ) {
+                                    final String jobName = (String) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_NAME);
+                                    final Object job = detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_OBJECT);
+
+                                    if ( jobName != null && job != null ) {
+                                        final Long jobBundleId = (Long) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_BUNDLE_ID);
+                                        if ( jobBundleId != null && jobBundleId.equals(bundleId) ) {
+                                            s.deleteJob(key);
+                                            this.logger.debug("Unscheduling job with name {}", jobName);
+                                        }
                                     }
                                 }
                             }
@@ -457,6 +460,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.QuartzThreadPool#getPoolSize()
          */
+        @Override
         public int getPoolSize() {
             return this.executor.getConfiguration().getMaxPoolSize();
         }
@@ -464,6 +468,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.QuartzThreadPool#initialize()
          */
+        @Override
         public void initialize() {
             // nothing to do
         }
@@ -471,6 +476,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.ThreadPool#setInstanceId(java.lang.String)
          */
+        @Override
         public void setInstanceId(final String id) {
             // we ignore this
         }
@@ -478,6 +484,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.ThreadPool#setInstanceName(java.lang.String)
          */
+        @Override
         public void setInstanceName(final String name) {
             // we ignore this
         }
@@ -485,6 +492,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.QuartzThreadPool#runInThread(java.lang.Runnable)
          */
+        @Override
         public boolean runInThread(final Runnable job) {
             this.executor.execute(job);
 
@@ -494,6 +502,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.ThreadPool#blockForAvailableThreads()
          */
+        @Override
         public int blockForAvailableThreads() {
             return this.executor.getConfiguration().getMaxPoolSize() - this.executor.getConfiguration().getQueueSize();
         }
@@ -501,6 +510,7 @@ public class QuartzScheduler implements
         /**
          * @see org.quartz.spi.QuartzThreadPool#shutdown(boolean)
          */
+        @Override
         public void shutdown(final boolean waitForJobsToComplete) {
             // the pool is managed by the thread pool manager,
             // so we can just return