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 2015/12/16 08:14:47 UTC

[1/4] camel git commit: CAMEL-9424 Correctly build TriggerKey using the trigger prefix relevant to the Action. This fixes the fuplicate trigger name issue when setting both start and stop route times on a CronScheduledRoutePolicy.

Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x 84842ded9 -> 35b55e257
  refs/heads/master 5d77c1162 -> e3aa8ae42


CAMEL-9424 Correctly build TriggerKey using the trigger prefix relevant to the Action. This fixes the fuplicate trigger name issue when setting both start and stop route times on a CronScheduledRoutePolicy.


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

Branch: refs/heads/master
Commit: c96a7c88551b167efe471a0711d494658945f1fb
Parents: 5d77c11
Author: Donovan Muller <do...@gmail.com>
Authored: Wed Dec 16 00:56:44 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 16 07:35:06 2015 +0100

----------------------------------------------------------------------
 .../quartz2/CronScheduledRoutePolicy.java       | 18 +++++--
 .../quartz2/CronScheduledRoutePolicyTest.java   | 56 ++++++++++++++++++++
 2 files changed, 69 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c96a7c88/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
index eb7978a..1b917a7 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
@@ -25,6 +25,7 @@ import org.apache.camel.util.ObjectHelper;
 import org.quartz.CronScheduleBuilder;
 import org.quartz.Trigger;
 import org.quartz.TriggerBuilder;
+import org.quartz.TriggerKey;
 
 public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements ScheduledRoutePolicyConstants {
     private String routeStartTime;
@@ -33,7 +34,7 @@ public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements Sc
     private String routeResumeTime;
     private String timeZoneString;
     private TimeZone timeZone;
-    
+
     public void onInit(Route route) {
         try {
             doOnInit(route);
@@ -80,25 +81,32 @@ public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements Sc
 
     @Override
     protected Trigger createTrigger(Action action, Route route) throws Exception {
-        Trigger  trigger = null;
-        
+        Trigger trigger = null;
+
         CronScheduleBuilder scheduleBuilder = null;
+        String triggerPrefix = null;
         if (action == Action.START) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteStartTime());
+            triggerPrefix = TRIGGER_START;
         } else if (action == Action.STOP) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteStopTime());
+            triggerPrefix = TRIGGER_STOP;
         } else if (action == Action.SUSPEND) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteSuspendTime());
+            triggerPrefix = TRIGGER_SUSPEND;
         } else if (action == Action.RESUME) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteResumeTime());
+            triggerPrefix = TRIGGER_RESUME;
         }
-        
+
         if (scheduleBuilder != null) {
             if (timeZone != null) {
                 scheduleBuilder.inTimeZone(timeZone);
             }
+
+            TriggerKey triggerKey = new TriggerKey(triggerPrefix + route.getId(), TRIGGER_GROUP + route.getId());
             trigger = TriggerBuilder.newTrigger()
-                .withIdentity(TRIGGER_START + route.getId(), TRIGGER_GROUP + route.getId())
+                .withIdentity(triggerKey)
                 .withSchedule(scheduleBuilder)
                 .build();
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/c96a7c88/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
index f8d9b2e..73ec425 100644
--- a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
@@ -16,9 +16,11 @@
  */
 package org.apache.camel.routepolicy.quartz2;
 
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.Consumer;
+import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.SuspendableService;
 import org.apache.camel.builder.RouteBuilder;
@@ -156,6 +158,60 @@ public class CronScheduledRoutePolicyTest extends CamelTestSupport {
         Thread.sleep(5000);
         assertTrue(context.getRouteStatus("test") == ServiceStatus.Stopped);
     }
+
+    @Test
+    public void testScheduledStartAndStopRoutePolicy() throws Exception {
+        MockEndpoint success = context.getEndpoint("mock:success", MockEndpoint.class);
+        success.expectedMessageCount(1);
+
+        final CountDownLatch startedLatch = new CountDownLatch(1);
+        final CountDownLatch stoppedLatch = new CountDownLatch(1);
+
+        context.getComponent("quartz2", QuartzComponent.class).setPropertiesFile("org/apache/camel/routepolicy/quartz2/myquartz.properties");
+        context.addRoutes(new RouteBuilder() {
+            public void configure() {
+                CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy() {
+
+                    @Override
+                    public void onStart(final Route route) {
+                        super.onStart(route);
+
+                        startedLatch.countDown();
+                    }
+
+                    @Override
+                    public void onStop(final Route route) {
+                        super.onStop(route);
+
+                        stoppedLatch.countDown();
+                    }
+                };
+                policy.setRouteStartTime("*/3 * * * * ?");
+                policy.setRouteStopTime("*/6 * * * * ?");
+                policy.setRouteStopGracePeriod(0);
+
+                from("direct:start")
+                        .routeId("test")
+                        .routePolicy(policy)
+                        .noAutoStartup()
+                        .to("mock:success");
+            }
+        });
+        context.start();
+
+        startedLatch.await(5000, TimeUnit.SECONDS);
+
+        ServiceStatus startedStatus = context.getRouteStatus("test");
+        assertTrue(startedStatus == ServiceStatus.Started || startedStatus == ServiceStatus.Starting);
+        template.sendBody("direct:start", "Ready or not, Here, I come");
+
+        stoppedLatch.await(5000, TimeUnit.SECONDS);
+
+        ServiceStatus stoppedStatus = context.getRouteStatus("test");
+        assertTrue(stoppedStatus == ServiceStatus.Stopped || stoppedStatus == ServiceStatus.Stopping);
+
+        success.assertIsSatisfied();
+    }
     
     @Test
     public void testScheduledStopRoutePolicyWithExtraPolicy() throws Exception {


[2/4] camel git commit: Polished

Posted by da...@apache.org.
Polished


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

Branch: refs/heads/master
Commit: e3aa8ae42160dd5801e979f05f1d0ceb733b492e
Parents: c96a7c8
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Dec 16 08:12:54 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 16 08:12:54 2015 +0100

----------------------------------------------------------------------
 .../org/apache/camel/model/rest/RestConfigurationDefinition.java | 2 +-
 .../org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e3aa8ae4/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
index 155a513..5dc4804 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
@@ -600,7 +600,7 @@ public class RestConfigurationDefinition {
     }
 
     /**
-     * For additional configuration options on data format level
+     * For configuring an api property, such as <tt>api.title</tt>, or <tt>api.version</tt>.
      */
     public RestConfigurationDefinition apiProperty(String key, String value) {
         RestPropertyDefinition prop = new RestPropertyDefinition();

http://git-wip-us.apache.org/repos/asf/camel/blob/e3aa8ae4/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
index 373db45..7b0f5df 100644
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
+++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
@@ -50,7 +50,9 @@ public class SwaggerRestApiProcessorFactory implements RestApiProcessorFactory {
         }
         // and context path is the base.path
         String path = configuration.getContextPath();
-        options.put("base.path", path);
+        if (path != null) {
+            options.put("base.path", path);
+        }
 
         return new RestSwaggerProcessor(contextIdPattern, contextIdListing, options);
     }


[3/4] camel git commit: CAMEL-9424 Correctly build TriggerKey using the trigger prefix relevant to the Action. This fixes the fuplicate trigger name issue when setting both start and stop route times on a CronScheduledRoutePolicy.

Posted by da...@apache.org.
CAMEL-9424 Correctly build TriggerKey using the trigger prefix relevant to the Action. This fixes the fuplicate trigger name issue when setting both start and stop route times on a CronScheduledRoutePolicy.


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

Branch: refs/heads/camel-2.16.x
Commit: b4aa8544a4b4fd4c6a711a2dca37274fbaf6cd94
Parents: 84842de
Author: Donovan Muller <do...@gmail.com>
Authored: Wed Dec 16 00:56:44 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 16 08:14:28 2015 +0100

----------------------------------------------------------------------
 .../quartz2/CronScheduledRoutePolicy.java       | 18 +++++--
 .../quartz2/CronScheduledRoutePolicyTest.java   | 56 ++++++++++++++++++++
 2 files changed, 69 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b4aa8544/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
index eb7978a..1b917a7 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
@@ -25,6 +25,7 @@ import org.apache.camel.util.ObjectHelper;
 import org.quartz.CronScheduleBuilder;
 import org.quartz.Trigger;
 import org.quartz.TriggerBuilder;
+import org.quartz.TriggerKey;
 
 public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements ScheduledRoutePolicyConstants {
     private String routeStartTime;
@@ -33,7 +34,7 @@ public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements Sc
     private String routeResumeTime;
     private String timeZoneString;
     private TimeZone timeZone;
-    
+
     public void onInit(Route route) {
         try {
             doOnInit(route);
@@ -80,25 +81,32 @@ public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements Sc
 
     @Override
     protected Trigger createTrigger(Action action, Route route) throws Exception {
-        Trigger  trigger = null;
-        
+        Trigger trigger = null;
+
         CronScheduleBuilder scheduleBuilder = null;
+        String triggerPrefix = null;
         if (action == Action.START) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteStartTime());
+            triggerPrefix = TRIGGER_START;
         } else if (action == Action.STOP) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteStopTime());
+            triggerPrefix = TRIGGER_STOP;
         } else if (action == Action.SUSPEND) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteSuspendTime());
+            triggerPrefix = TRIGGER_SUSPEND;
         } else if (action == Action.RESUME) {
             scheduleBuilder = CronScheduleBuilder.cronSchedule(getRouteResumeTime());
+            triggerPrefix = TRIGGER_RESUME;
         }
-        
+
         if (scheduleBuilder != null) {
             if (timeZone != null) {
                 scheduleBuilder.inTimeZone(timeZone);
             }
+
+            TriggerKey triggerKey = new TriggerKey(triggerPrefix + route.getId(), TRIGGER_GROUP + route.getId());
             trigger = TriggerBuilder.newTrigger()
-                .withIdentity(TRIGGER_START + route.getId(), TRIGGER_GROUP + route.getId())
+                .withIdentity(triggerKey)
                 .withSchedule(scheduleBuilder)
                 .build();
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/b4aa8544/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
index 6b6ace4..4fd6876 100644
--- a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java
@@ -16,9 +16,11 @@
  */
 package org.apache.camel.routepolicy.quartz2;
 
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.Consumer;
+import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.SuspendableService;
 import org.apache.camel.builder.RouteBuilder;
@@ -156,6 +158,60 @@ public class CronScheduledRoutePolicyTest extends CamelTestSupport {
         Thread.sleep(5000);
         assertTrue(context.getRouteStatus("test") == ServiceStatus.Stopped);
     }
+
+    @Test
+    public void testScheduledStartAndStopRoutePolicy() throws Exception {
+        MockEndpoint success = context.getEndpoint("mock:success", MockEndpoint.class);
+        success.expectedMessageCount(1);
+
+        final CountDownLatch startedLatch = new CountDownLatch(1);
+        final CountDownLatch stoppedLatch = new CountDownLatch(1);
+
+        context.getComponent("quartz2", QuartzComponent.class).setPropertiesFile("org/apache/camel/routepolicy/quartz2/myquartz.properties");
+        context.addRoutes(new RouteBuilder() {
+            public void configure() {
+                CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy() {
+
+                    @Override
+                    public void onStart(final Route route) {
+                        super.onStart(route);
+
+                        startedLatch.countDown();
+                    }
+
+                    @Override
+                    public void onStop(final Route route) {
+                        super.onStop(route);
+
+                        stoppedLatch.countDown();
+                    }
+                };
+                policy.setRouteStartTime("*/3 * * * * ?");
+                policy.setRouteStopTime("*/6 * * * * ?");
+                policy.setRouteStopGracePeriod(0);
+
+                from("direct:start")
+                        .routeId("test")
+                        .routePolicy(policy)
+                        .noAutoStartup()
+                        .to("mock:success");
+            }
+        });
+        context.start();
+
+        startedLatch.await(5000, TimeUnit.SECONDS);
+
+        ServiceStatus startedStatus = context.getRouteStatus("test");
+        assertTrue(startedStatus == ServiceStatus.Started || startedStatus == ServiceStatus.Starting);
+        template.sendBody("direct:start", "Ready or not, Here, I come");
+
+        stoppedLatch.await(5000, TimeUnit.SECONDS);
+
+        ServiceStatus stoppedStatus = context.getRouteStatus("test");
+        assertTrue(stoppedStatus == ServiceStatus.Stopped || stoppedStatus == ServiceStatus.Stopping);
+
+        success.assertIsSatisfied();
+    }
     
     @Test
     public void testScheduledStopRoutePolicyWithExtraPolicy() throws Exception {


[4/4] camel git commit: Polished

Posted by da...@apache.org.
Polished


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

Branch: refs/heads/camel-2.16.x
Commit: 35b55e257338cae43ac3a3e1df48db316c721306
Parents: b4aa854
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Dec 16 08:12:54 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 16 08:14:35 2015 +0100

----------------------------------------------------------------------
 .../org/apache/camel/model/rest/RestConfigurationDefinition.java | 2 +-
 .../org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/35b55e25/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
index 155a513..5dc4804 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
@@ -600,7 +600,7 @@ public class RestConfigurationDefinition {
     }
 
     /**
-     * For additional configuration options on data format level
+     * For configuring an api property, such as <tt>api.title</tt>, or <tt>api.version</tt>.
      */
     public RestConfigurationDefinition apiProperty(String key, String value) {
         RestPropertyDefinition prop = new RestPropertyDefinition();

http://git-wip-us.apache.org/repos/asf/camel/blob/35b55e25/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
index 373db45..7b0f5df 100644
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
+++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestApiProcessorFactory.java
@@ -50,7 +50,9 @@ public class SwaggerRestApiProcessorFactory implements RestApiProcessorFactory {
         }
         // and context path is the base.path
         String path = configuration.getContextPath();
-        options.put("base.path", path);
+        if (path != null) {
+            options.put("base.path", path);
+        }
 
         return new RestSwaggerProcessor(contextIdPattern, contextIdListing, options);
     }