CAMEL-7809: Ensure the cron schedule is updated when the job is rescheduled


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6ab37afa
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6ab37afa
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6ab37afa

Branch: refs/heads/master
Commit: 6ab37afa16adbf73f368ac4ff7ae513864b38107
Parents: 6a15b8e
Author: David Riseley <d...@openanswers.co.uk>
Authored: Tue Mar 28 09:52:53 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Mar 28 11:28:23 2017 +0200

----------------------------------------------------------------------
 .../quartz2/QuartzScheduledPollConsumerScheduler.java       | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6ab37afa/components/camel-quartz2/src/main/java/org/apache/camel/pollconsumer/quartz2/QuartzScheduledPollConsumerScheduler.java
----------------------------------------------------------------------
diff --git 
a/components/camel-quartz2/src/main/java/org/apache/camel/pollconsumer/quartz2/QuartzScheduledPollConsumerScheduler.java
 
b/components/camel-quartz2/src/main/java/org/apache/camel/pollconsumer/quartz2/QuartzScheduledPollConsumerScheduler.java
index 5192a56..6213903 100644
--- 
a/components/camel-quartz2/src/main/java/org/apache/camel/pollconsumer/quartz2/QuartzScheduledPollConsumerScheduler.java
+++ 
b/components/camel-quartz2/src/main/java/org/apache/camel/pollconsumer/quartz2/QuartzScheduledPollConsumerScheduler.java
@@ -168,11 +168,11 @@ public class QuartzScheduledPollConsumerScheduler extends 
ServiceSupport impleme
             id = "trigger-" + 
getCamelContext().getUuidGenerator().generateUuid();
         }
 
-        Trigger existingTrigger = null;
+        CronTrigger existingTrigger = null;
         TriggerKey triggerKey = null;
         if (triggerId != null && triggerGroup != null) {
             triggerKey = new TriggerKey(triggerId, triggerGroup);
-            existingTrigger = quartzScheduler.getTrigger(triggerKey);
+            existingTrigger = 
(CronTrigger)quartzScheduler.getTrigger(triggerKey);
         }
 
         // Is an trigger already exist for this triggerId ?
@@ -208,8 +208,11 @@ public class QuartzScheduledPollConsumerScheduler extends 
ServiceSupport impleme
 
             QuartzHelper.updateJobDataMap(getCamelContext(), job, null);
             LOG.debug("Updated jobData map to {}", jobData);
+            
+            // Ensure the cron schedule is updated
+            CronTrigger newTrigger = 
existingTrigger.getTriggerBuilder().withSchedule(CronScheduleBuilder.cronSchedule(getCron()).inTimeZone(getTimeZone())).build();
 
-            quartzScheduler.rescheduleJob(triggerKey, existingTrigger);
+            quartzScheduler.rescheduleJob(triggerKey, newTrigger);
         }
     }
 

Reply via email to