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