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 2009/02/28 12:34:33 UTC

svn commit: r748821 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/processor/DelayProcessorSupport.java test/java/org/apache/camel/processor/DelayerTest.java test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java

Author: davsclaus
Date: Sat Feb 28 11:34:33 2009
New Revision: 748821

URL: http://svn.apache.org/viewvc?rev=748821&view=rev
Log:
CAMEL-1406: DelayProcessor now properly supports shutting down while sleeping

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java
      - copied, changed from r748781, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java?rev=748821&r1=748820&r2=748821&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java Sat Feb 28 11:34:33 2009
@@ -73,7 +73,8 @@
      * @param exchange the exchange being processed
      */
     protected void waitUntil(long time, Exchange exchange) throws Exception {
-        while (true) {
+        // only run is we are started
+        while (isRunAllowed()) {
             long delay = time - currentSystemTime();
             if (delay < 0) {
                 return;
@@ -109,7 +110,7 @@
      * case differently
      */
     protected void handleSleepInteruptedException(InterruptedException e) {
-        LOG.debug("Sleep interupted: " + e, e);
+        LOG.debug("Sleep interrupted, are we stopping? " + (isStopping() || isStopped()));
     }
 
     protected long currentSystemTime() {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java?rev=748821&r1=748820&r2=748821&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java Sat Feb 28 11:34:33 2009
@@ -29,8 +29,7 @@
         MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
         resultEndpoint.expectedMessageCount(0);
 
-        template.sendBodyAndHeader("seda:a", "<hello>world!</hello>", "JMSTimestamp", System
-            .currentTimeMillis());
+        template.sendBodyAndHeader("seda:a", "<hello>world!</hello>", "JMSTimestamp", System.currentTimeMillis());
         resultEndpoint.assertIsSatisfied();
 
         // now if we wait a bit longer we should receive the message!
@@ -45,12 +44,6 @@
         resultEndpoint.assertIsSatisfied();
     }
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-    }
-
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java (from r748781, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java&r1=748781&r2=748821&rev=748821&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerWhileShutdownTest.java Sat Feb 28 11:34:33 2009
@@ -21,46 +21,28 @@
 import org.apache.camel.component.mock.MockEndpoint;
 
 /**
+ * Delayer while shutting down so its interrupted and will also stop.
+ *
  * @version $Revision$
  */
-public class DelayerTest extends ContextTestSupport {
+public class DelayerWhileShutdownTest extends ContextTestSupport {
 
     public void testSendingMessageGetsDelayed() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        resultEndpoint.expectedMessageCount(0);
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("Short delay");
 
-        template.sendBodyAndHeader("seda:a", "<hello>world!</hello>", "JMSTimestamp", System
-            .currentTimeMillis());
-        resultEndpoint.assertIsSatisfied();
-
-        // now if we wait a bit longer we should receive the message!
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.assertIsSatisfied();
-
-        template.sendBody("seda:b", "<hello>world!</hello>");
-        resultEndpoint.assertIsSatisfied();
-
-        // now if we wait a bit longer we should receive the message!
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+        template.sendBody("seda:a", "Long delay");
+        template.sendBody("seda:b", "Short delay");
 
+        assertMockEndpointsSatisfied();
     }
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                // START SNIPPET: ex
-                from("seda:a").delay(header("JMSTimestamp"), 3000).to("mock:result");
-                // END SNIPPET: ex
-                // START SNIPPET: ex2
-                from("seda:b").delay(3000).to("mock:result");
-                // END SNIPPET: ex2
+                from("seda:a").delay(5000).to("mock:result");
+                from("seda:b").delay(10).to("mock:result");
             }
         };
     }
-}
+}
\ No newline at end of file