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 2010/10/07 17:16:39 UTC

svn commit: r1005489 - in /camel/trunk/components/camel-quartz/src: main/java/org/apache/camel/component/quartz/QuartzComponent.java test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java

Author: davsclaus
Date: Thu Oct  7 15:16:33 2010
New Revision: 1005489

URL: http://svn.apache.org/viewvc?rev=1005489&view=rev
Log:
CAMEL-3203: Fixed adding routes with quartz endpoints to already started camel should add jobs to scheduler.

Added:
    camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java
      - copied, changed from r1005417, camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzStartDelayedTest.java
Modified:
    camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java

Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java?rev=1005489&r1=1005488&r2=1005489&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java (original)
+++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java Thu Oct  7 15:16:33 2010
@@ -186,9 +186,14 @@ public class QuartzComponent extends Def
         }
     }
 
-    public void addJob(JobDetail job, Trigger trigger) {
-        // add job to internal list because we will defer adding to the scheduler when camel context has been fully started
-        jobsToAdd.add(new JobToAdd(job, trigger));
+    public void addJob(JobDetail job, Trigger trigger) throws SchedulerException {
+        if (scheduler == null) {
+            // add job to internal list because we will defer adding to the scheduler when camel context has been fully started
+            jobsToAdd.add(new JobToAdd(job, trigger));
+        } else {
+            // add job directly to scheduler
+            doAddJob(job, trigger);
+        }
     }
 
     private void doAddJob(JobDetail job, Trigger trigger) throws SchedulerException {

Copied: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java (from r1005417, camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzStartDelayedTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java?p2=camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java&p1=camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzStartDelayedTest.java&r1=1005417&r2=1005489&rev=1005489&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzStartDelayedTest.java (original)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzAddRoutesAfterCamelContextStartedTest.java Thu Oct  7 15:16:33 2010
@@ -19,37 +19,31 @@ package org.apache.camel.component.quart
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 
 /**
  * @version $Revision$
  */
-public class QuartzStartDelayedTest extends CamelTestSupport {
+public class QuartzAddRoutesAfterCamelContextStartedTest extends CamelTestSupport {
 
     @Test
-    public void testStartDelayed() throws Exception {
-        StopWatch watch = new StopWatch();
+    public void testAddRoutes() throws Exception {
+        // camel context should already be started
+        assertTrue(context.getStatus().isStarted());
 
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(2);
 
-        assertMockEndpointsSatisfied();
-
-        long time = watch.stop();
-        assertTrue("Should take longer than 3 seconds, was: " + time + " millis.", time > 2500);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
+        // add the quartz router after CamelContext has been started
+        context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                QuartzComponent quartz = context.getComponent("quartz", QuartzComponent.class);
-                quartz.setStartDelayedSeconds(3);
-
-                from("quartz://myGroup/myTimerName?trigger.repeatInterval=2&trigger.repeatCount=1").routeId("myRoute").to("mock:result");
+                from("quartz://myGroup/myTimerName?trigger.repeatInterval=2&trigger.repeatCount=1").to("mock:result");
             }
-        };
+        });
+
+        // it should also work
+        assertMockEndpointsSatisfied();
     }
+
 }