You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/01/03 13:50:02 UTC
[2/2] git commit: CAMEL-7103: camel-quarz now stores trigger
information in job data map,
so end users have that information in Camel message routes.
CAMEL-7103: camel-quarz now stores trigger information in job data map, so end users have that information in Camel message routes.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0d429cdc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0d429cdc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0d429cdc
Branch: refs/heads/camel-2.12.x
Commit: 0d429cdc09548472ca05e2205a0bc8e5b80d293b
Parents: 3b1f285
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jan 3 13:53:15 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jan 3 13:53:33 2014 +0100
----------------------------------------------------------------------
.../camel/component/quartz/QuartzComponent.java | 24 ++++++++++++++++--
.../camel/component/quartz/QuartzConstants.java | 6 +++++
.../component/quartz/QuartzCronRouteTest.java | 7 ++++++
.../quartz/QuartzRouteFireNowTest.java | 26 ++++++++++++++++++--
.../camel/component/quartz/QuartzRouteTest.java | 8 ++++++
5 files changed, 67 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0d429cdc/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
index 15e14db..0718a2c 100644
--- a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
+++ b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
@@ -144,6 +144,7 @@ public class QuartzComponent extends DefaultComponent implements StartupListener
// create the trigger either cron or simple
if (ObjectHelper.isNotEmpty(cron)) {
+ cron = encodeCronExpression(cron);
trigger = createCronTrigger(cron);
} else {
trigger = new SimpleTrigger();
@@ -159,6 +160,22 @@ public class QuartzComponent extends DefaultComponent implements StartupListener
QuartzEndpoint answer = new QuartzEndpoint(uri, this);
setProperties(answer.getJobDetail(), jobParameters);
+ // enrich job data map with trigger information
+ if (cron != null) {
+ answer.getJobDetail().getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_TYPE, "cron");
+ answer.getJobDetail().getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_CRON_EXPRESSION, cron);
+ } else {
+ answer.getJobDetail().getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_TYPE, "simple");
+ Long interval = getCamelContext().getTypeConverter().convertTo(Long.class, triggerParameters.get("repeatInterval"));
+ if (interval != null) {
+ answer.getJobDetail().getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_INTERVAL, interval);
+ }
+ Integer counter = getCamelContext().getTypeConverter().convertTo(Integer.class, triggerParameters.get("repeatCount"));
+ if (counter != null) {
+ answer.getJobDetail().getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_COUNTER, counter);
+ }
+ }
+
setProperties(trigger, triggerParameters);
trigger.setName(name);
trigger.setGroup(group);
@@ -168,13 +185,16 @@ public class QuartzComponent extends DefaultComponent implements StartupListener
}
protected CronTrigger createCronTrigger(String path) throws ParseException {
- // replace + back to space so it's a cron expression
- path = path.replaceAll("\\+", " ");
CronTrigger cron = new CronTrigger();
cron.setCronExpression(path);
return cron;
}
+ private static String encodeCronExpression(String path) {
+ // replace + back to space so it's a cron expression
+ return path.replaceAll("\\+", " ");
+ }
+
public void onCamelContextStarted(CamelContext camelContext, boolean alreadyStarted) throws Exception {
if (scheduler != null) {
// register current camel context to scheduler so we can look it up when jobs is being triggered
http://git-wip-us.apache.org/repos/asf/camel/blob/0d429cdc/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConstants.java b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConstants.java
index 725f4ad..f68b75b 100644
--- a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConstants.java
+++ b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConstants.java
@@ -28,6 +28,12 @@ public final class QuartzConstants {
public static final String QUARTZ_CAMEL_CONTEXT = "CamelQuartzCamelContext";
+ public static final String QUARTZ_TRIGGER_TYPE = "CamelQuartzTriggerType";
+ public static final String QUARTZ_TRIGGER_CRON_EXPRESSION = "CamelQuartzTriggerCronExpression";
+ public static final String QUARTZ_TRIGGER_CRON_TIMEZONE = "CamelQuartzTriggerCronTimeZone";
+ public static final String QUARTZ_TRIGGER_SIMPLE_REPEAT_COUNTER = "CamelQuartzTriggerSimpleRepeatCounter";
+ public static final String QUARTZ_TRIGGER_SIMPLE_REPEAT_INTERVAL = "CamelQuartzTriggerSimpleRepeatInterval";
+
private QuartzConstants() {
// Utility class
}
http://git-wip-us.apache.org/repos/asf/camel/blob/0d429cdc/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzCronRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzCronRouteTest.java b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzCronRouteTest.java
index 5ad38a5..8390667 100644
--- a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzCronRouteTest.java
+++ b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzCronRouteTest.java
@@ -20,6 +20,7 @@ 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;
/**
* @version
@@ -32,6 +33,12 @@ public class QuartzCronRouteTest extends CamelTestSupport {
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("0/2 * * * * ?", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_CRON_EXPRESSION));
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/0d429cdc/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
index 93e9a97..aa52d67 100644
--- a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
+++ b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
@@ -17,12 +17,34 @@
package org.apache.camel.component.quartz;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Test;
+import org.quartz.JobDetail;
/**
* @version
*/
-public class QuartzRouteFireNowTest extends QuartzRouteTest {
-
+public class QuartzRouteFireNowTest extends BaseQuartzTest {
+ protected MockEndpoint resultEndpoint;
+
+ @Test
+ public void testQuartzRoute() throws Exception {
+ resultEndpoint = getMockEndpoint("mock:result");
+ resultEndpoint.expectedMessageCount(2);
+ resultEndpoint.message(0).header("triggerName").isEqualTo("myTimerName");
+ resultEndpoint.message(0).header("triggerGroup").isEqualTo("myGroup");
+
+ // lets test the receive worked
+ resultEndpoint.assertIsSatisfied();
+
+ JobDetail job = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader("jobDetail", JobDetail.class);
+ assertNotNull(job);
+
+ assertEquals("simple", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_TYPE));
+ assertEquals(25000L, job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_INTERVAL));
+ assertEquals(2, job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_COUNTER));
+ }
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
http://git-wip-us.apache.org/repos/asf/camel/blob/0d429cdc/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteTest.java b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteTest.java
index 88e51fa..d6efdbf 100644
--- a/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteTest.java
+++ b/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteTest.java
@@ -20,6 +20,7 @@ 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;
/**
* @version
@@ -36,6 +37,13 @@ public class QuartzRouteTest extends CamelTestSupport {
// lets test the receive worked
resultEndpoint.assertIsSatisfied();
+
+ JobDetail job = resultEndpoint.getReceivedExchanges().get(0).getIn().getHeader("jobDetail", JobDetail.class);
+ assertNotNull(job);
+
+ assertEquals("simple", job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_TYPE));
+ assertEquals(2L, job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_INTERVAL));
+ assertEquals(1, job.getJobDataMap().get(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_COUNTER));
}
@Override