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/06/28 09:03:53 UTC
svn commit: r958475 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/processor/ test/java/org/apache/camel/processor/
test/java/org/apache/camel/processor/async/
Author: davsclaus
Date: Mon Jun 28 07:03:53 2010
New Revision: 958475
URL: http://svn.apache.org/viewvc?rev=958475&view=rev
Log:
CAMEL-2867: Fixed convertBodyTo accepting null bodies. CAMEL-2866: Fixed filter EIP.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTransformTest.java
- copied, changed from r958464, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCBRTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ConvertBodyTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java?rev=958475&r1=958474&r2=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java Mon Jun 28 07:03:53 2010
@@ -56,7 +56,7 @@ public class ChoiceProcessor extends Ser
if (predicate != null && predicate.matches(exchange)) {
// process next will also take care (has not null test) if next was a stop().
// stop() has no processor to execute, and thus we will end in a NPE
- return filterProcessor.process(exchange, callback);
+ return filterProcessor.processNext(exchange, callback);
}
}
if (otherwise != null) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java?rev=958475&r1=958474&r2=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java Mon Jun 28 07:03:53 2010
@@ -51,14 +51,18 @@ public class ConvertBodyProcessor implem
if (charset != null) {
exchange.setProperty(Exchange.CHARSET_NAME, charset);
}
- Object value = in.getMandatoryBody(type);
- if (exchange.getPattern().isOutCapable()) {
- Message out = exchange.getOut();
- out.copyFrom(in);
- out.setBody(value);
- } else {
- in.setBody(value);
+ // only convert if the is a body
+ if (in.getBody() != null) {
+ Object value = in.getMandatoryBody(type);
+
+ if (exchange.getPattern().isOutCapable()) {
+ Message out = exchange.getOut();
+ out.copyFrom(in);
+ out.setBody(value);
+ } else {
+ in.setBody(value);
+ }
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java?rev=958475&r1=958474&r2=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java Mon Jun 28 07:03:53 2010
@@ -32,6 +32,9 @@ import org.apache.camel.util.ServiceHelp
/**
* A Delegate pattern which delegates processing to a nested {@link AsyncProcessor} which can
* be useful for implementation inheritance when writing an {@link org.apache.camel.spi.Policy}
+ * <p/>
+ * <b>Important:</b> This implementation <b>does</b> support the asynchronous routing engine.
+ * If you are implementing a EIP pattern please use this as the delegate.
*
* @version $Revision$
* @see org.apache.camel.processor.DelegateProcessor
@@ -78,7 +81,15 @@ public class DelegateAsyncProcessor exte
ServiceHelper.stopServices(processor);
}
+ public void process(Exchange exchange) throws Exception {
+ AsyncProcessorHelper.process(this, exchange);
+ }
+
public boolean process(final Exchange exchange, final AsyncCallback callback) {
+ return processNext(exchange, callback);
+ }
+
+ protected boolean processNext(Exchange exchange, AsyncCallback callback) {
if (processor == null) {
// no processor then we are done
callback.done(true);
@@ -87,10 +98,6 @@ public class DelegateAsyncProcessor exte
return processor.process(exchange, callback);
}
- public void process(Exchange exchange) throws Exception {
- AsyncProcessorHelper.process(this, exchange);
- }
-
public boolean hasNext() {
return processor != null;
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java?rev=958475&r1=958474&r2=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java Mon Jun 28 07:03:53 2010
@@ -82,7 +82,10 @@ public class DelegateProcessor extends S
/**
* Proceed with the underlying delegated processor
+ *
+ * @deprecated will be removed in Camel 2.5
*/
+ @Deprecated
public void proceed(Exchange exchange) throws Exception {
processNext(exchange);
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ConvertBodyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ConvertBodyTest.java?rev=958475&r1=958474&r2=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ConvertBodyTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ConvertBodyTest.java Mon Jun 28 07:03:53 2010
@@ -38,6 +38,16 @@ public class ConvertBodyTest extends Con
assertMockEndpointsSatisfied();
}
+ public void testConvertNullBody() throws Exception {
+ MockEndpoint result = getMockEndpoint("mock:result");
+ result.expectedMessageCount(1);
+ result.message(0).body().isNull();
+
+ template.sendBody("direct:start", null);
+
+ assertMockEndpointsSatisfied();
+ }
+
public void testConvertFailed() throws Exception {
MockEndpoint dead = getMockEndpoint("mock:dead");
dead.expectedMessageCount(1);
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTransformTest.java (from r958464, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCBRTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTransformTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTransformTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCBRTest.java&r1=958464&r2=958475&rev=958475&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCBRTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTransformTest.java Mon Jun 28 07:03:53 2010
@@ -24,7 +24,7 @@ import org.apache.camel.builder.RouteBui
/**
* @version $Revision$
*/
-public class AsyncEndpointCBRTest extends ContextTestSupport {
+public class AsyncEndpointTransformTest extends ContextTestSupport {
private static String beforeThreadName;
private static String afterThreadName;
@@ -52,22 +52,21 @@ public class AsyncEndpointCBRTest extend
from("direct:start")
.to("mock:before")
.to("log:before")
- .choice()
- .when(body().contains("Camel"))
- .process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- beforeThreadName = Thread.currentThread().getName();
- }
- })
- .to("async:Bye Camel")
- .process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- afterThreadName = Thread.currentThread().getName();
- }
- })
- .to("log:after")
- .to("mock:after")
- .end()
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ beforeThreadName = Thread.currentThread().getName();
+ }
+ })
+ .to("async:Hi Camel")
+ .transform(simple("Hello World"))
+ .to("async:Bye Camel")
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ afterThreadName = Thread.currentThread().getName();
+ }
+ })
+ .to("log:after")
+ .to("mock:after")
.to("mock:result");
}
};