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