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 <ch0...@gmail.com> Authored: Wed Aug 27 12:27:02 2014 +0200 Committer: Charles Moulliard <ch0...@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"); + } + }; + } +}