Author: davsclaus
Date: Thu Dec 10 11:32:12 2009
New Revision: 889199

URL: http://svn.apache.org/viewvc?rev=889199&view=rev
Log:
CAMEL-2276: seda timeout can now be disabled using a value of 0 or negative.

Added:
    
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutDisabledTest.java
      - copied, changed from r889174, 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutTest.java
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java?rev=889199&r1=889198&r2=889199&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
 Thu Dec 10 11:32:12 2009
@@ -74,10 +74,22 @@
             });
 
             queue.add(copy);
-            // lets see if we can get the task done before the timeout
-            boolean done = latch.await(timeout, TimeUnit.MILLISECONDS);
-            if (!done) {
-                exchange.setException(new ExchangeTimedOutException(exchange, 
timeout));
+
+            if (timeout > 0) {
+                if (log.isTraceEnabled()) {
+                    log.trace("Waiting for task to complete using timeout 
(ms): " + timeout);
+                }
+                // lets see if we can get the task done before the timeout
+                boolean done = latch.await(timeout, TimeUnit.MILLISECONDS);
+                if (!done) {
+                    exchange.setException(new 
ExchangeTimedOutException(exchange, timeout));
+                }
+            } else {
+                if (log.isTraceEnabled()) {
+                    log.trace("Waiting for task to complete (blocking)");
+                }
+                // no timeout then wait until its done
+                latch.await();
             }
         } else {
             // no wait, eg its a InOnly then just add to queue and return

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java?rev=889199&r1=889198&r2=889199&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java 
(original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java 
Thu Dec 10 11:32:12 2009
@@ -24,7 +24,7 @@
 import org.apache.commons.logging.LogFactory;
 
 /**
- * A default implementation of @{link Producer} for implementation inheritence
+ * A default implementation of @{link Producer} for implementation inheritance
  *
  * @version $Revision$
  */

Copied: 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutDisabledTest.java
 (from r889174, 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutDisabledTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutDisabledTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutTest.java&r1=889174&r2=889199&rev=889199&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaTimeoutDisabledTest.java
 Thu Dec 10 11:32:12 2009
@@ -16,33 +16,21 @@
  */
 package org.apache.camel.component.seda;
 
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.builder.RouteBuilder;
 
 /**
  * @version $Revision$
  */
-public class SedaTimeoutTest extends ContextTestSupport {
+public class SedaTimeoutDisabledTest extends ContextTestSupport {
 
     public void testSedaNoTineout() throws Exception {
-        Future<String> out = template.asyncRequestBody("seda:foo", "World", 
String.class);
-        assertEquals("Bye World", out.get());
-    }
-
-    public void testSedaTineout() throws Exception {
-        Future<String> out = 
template.asyncRequestBody("seda:foo?timeout=1000", "World", String.class);
-        try {
-            out.get();
-            fail("Should have thrown an exception");
-        } catch (ExecutionException e) {
-            assertIsInstanceOf(CamelExecutionException.class, e.getCause());
-            assertIsInstanceOf(ExchangeTimedOutException.class, 
e.getCause().getCause());
-        }
+        Future<String> out = template.asyncRequestBody("seda:foo?timeout=0", 
"World", String.class);
+        // use 60 sec failsafe in case something hangs
+        assertEquals("Bye World", out.get(60, TimeUnit.SECONDS));
     }
 
     @Override
@@ -50,8 +38,8 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                
from("seda:foo").to("mock:before").delay(3000).transform(body().prepend("Bye 
")).to("mock:result");
+                
from("seda:foo").to("mock:before").delay(2000).transform(body().prepend("Bye 
")).to("mock:result");
             }
         };
     }
-}
+}
\ No newline at end of file


Reply via email to