You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2014/08/27 12:27:11 UTC

git commit: CAMEL-7754: Add support for TimeZone

Repository: camel
Updated Branches:
  refs/heads/master 253af883b -> d4a930623


CAMEL-7754: Add support for TimeZone


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

Branch: refs/heads/master
Commit: d4a9306232ab633b8a38de87a56b308296c4b5a7
Parents: 253af88
Author: Charles Moulliard <ch...@gmail.com>
Authored: Wed Aug 27 12:27:02 2014 +0200
Committer: Charles Moulliard <ch...@gmail.com>
Committed: Wed Aug 27 12:27:02 2014 +0200

----------------------------------------------------------------------
 .../camel/component/quartz2/QuartzEndpoint.java | 25 ++++++++++----
 .../quartz2/QuartzCronTriggerRouteTest.java     | 34 ++++++++++++++++++++
 2 files changed, 53 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d4a93062/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
index c4cb731..7552c4c 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.quartz2;
 
 import java.util.Date;
 import java.util.Map;
+import java.util.TimeZone;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -282,16 +283,28 @@ public class QuartzEndpoint extends DefaultEndpoint {
         }
         if (cron != null) {
             LOG.debug("Creating CronTrigger: {}", cron);
-            result = TriggerBuilder.newTrigger()
-                    .withIdentity(triggerKey)
-                    .startAt(startTime)
-                    .withSchedule(cronSchedule(cron).withMisfireHandlingInstructionFireAndProceed())
-                    .build();
+            String timeZone = (String)triggerParameters.get("timeZone");
+            if (timeZone != null) {
+                result = TriggerBuilder.newTrigger()
+                        .withIdentity(triggerKey)
+                        .startAt(startTime)
+                        .withSchedule(cronSchedule(cron)
+                                .withMisfireHandlingInstructionFireAndProceed()
+                                .inTimeZone(TimeZone.getTimeZone(timeZone)))
+                        .build();
+                jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_CRON_TIMEZONE, timeZone);
+            } else {
+                result = TriggerBuilder.newTrigger()
+                        .withIdentity(triggerKey)
+                        .startAt(startTime)
+                        .withSchedule(cronSchedule(cron)
+                                .withMisfireHandlingInstructionFireAndProceed())
+                        .build();
+            }
 
             // enrich job map with details
             jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_TYPE, "cron");
             jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_CRON_EXPRESSION, cron);
-
         } else {
             LOG.debug("Creating SimpleTrigger.");
             int repeat = SimpleTrigger.REPEAT_INDEFINITELY;

http://git-wip-us.apache.org/repos/asf/camel/blob/d4a93062/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzCronTriggerRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzCronTriggerRouteTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzCronTriggerRouteTest.java
new file mode 100644
index 0000000..bd31fec
--- /dev/null
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzCronTriggerRouteTest.java
@@ -0,0 +1,34 @@
+package org.apache.camel.component.quartz2;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import org.quartz.JobDetail;
+
+public class QuartzCronTriggerRouteTest extends CamelTestSupport {
+
+    @Test
+    public void testQuartzCronRoute() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMinimumMessageCount(3);
+
+        assertMockEndpointsSatisfied();
+
+        JobDetail job = mock.getReceivedExchanges().get(0).getIn().getHeader("jobDetail", JobDetail.class);
+        assertNotNull(job);
+
+        assertEquals("cron", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_TYPE));
+        assertEquals("UTC", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_CRON_TIMEZONE));
+        assertEquals("0/2 * * * * ?", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_CRON_EXPRESSION));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("quartz2://myGroup/myTimerName?cron=0/2+*+*+*+*+?&trigger.timeZone=UTC").to("mock:result");
+            }
+        };
+    }
+}