Author: davsclaus
Date: Fri Jun 25 05:07:04 2010
New Revision: 957796

URL: http://svn.apache.org/viewvc?rev=957796&view=rev
Log:
CAMEL-2844: quartz should keep jobs on shutdown. And only remove if the job if 
its volatile.

Modified:
    
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
    
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java

Modified: 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java?rev=957796&r1=957795&r2=957796&view=diff
==============================================================================
--- 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
 (original)
+++ 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
 Fri Jun 25 05:07:04 2010
@@ -163,13 +163,20 @@ public class QuartzComponent extends Def
 
     }
 
-    public void removeJob(Trigger trigger) throws SchedulerException {
+    public void removeJob(JobDetail job, Trigger trigger) throws 
SchedulerException {
         JOBS.decrementAndGet();
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Removing job using trigger: " + trigger.getGroup() + 
"/" + trigger.getName());
+        // only un schedule volatile jobs
+        if (job.isVolatile()) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Removing job using trigger: " + trigger.getGroup() 
+ "/" + trigger.getName());
+            }
+            getScheduler().unscheduleJob(trigger.getName(), 
trigger.getGroup());
+        } else {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Keeping volatile job using trigger: " + 
trigger.getGroup() + "/" + trigger.getName());
+            }
         }
-        getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
     }
 
     // Properties

Modified: 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java?rev=957796&r1=957795&r2=957796&view=diff
==============================================================================
--- 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
 Fri Jun 25 05:07:04 2010
@@ -77,8 +77,8 @@ public class QuartzEndpoint extends Defa
         getComponent().addJob(detail, trigger);
     }
 
-    public void removeTrigger(final Trigger trigger) throws SchedulerException 
{
-        getComponent().removeJob(trigger);
+    public void removeTrigger(final Trigger trigger, final JobDetail detail) 
throws SchedulerException {
+        getComponent().removeJob(detail, trigger);
     }
 
     /**
@@ -196,7 +196,7 @@ public class QuartzEndpoint extends Defa
         ObjectHelper.notNull(trigger, "trigger");
         getLoadBalancer().removeProcessor(consumer.getProcessor());
         if (getLoadBalancer().getProcessors().isEmpty() && started) {
-            removeTrigger(getTrigger());
+            removeTrigger(getTrigger(), getJobDetail());
             started = false;
         }
     }


Reply via email to