You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2016/05/03 15:26:41 UTC
camel git commit: CAMEL-8723 : Add desired message type to
ProducerTemplate.sendBody methods
Repository: camel
Updated Branches:
refs/heads/master 2d80be3bf -> 13bd2a7f1
CAMEL-8723 : Add desired message type to ProducerTemplate.sendBody methods
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/13bd2a7f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/13bd2a7f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/13bd2a7f
Branch: refs/heads/master
Commit: 13bd2a7f122000cf00a2d61a00654fe1f8020fdd
Parents: 2d80be3
Author: lburgazzoli <lb...@gmail.com>
Authored: Tue May 3 15:25:01 2016 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Tue May 3 15:25:24 2016 +0200
----------------------------------------------------------------------
.../camel/builder/FluentProducerTemplate.java | 37 +++++++-----
.../builder/FluentProducerTemplateTest.java | 61 ++++++++++++++------
2 files changed, 65 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/13bd2a7f/camel-core/src/main/java/org/apache/camel/builder/FluentProducerTemplate.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/FluentProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/builder/FluentProducerTemplate.java
index bb8ae98..98bec58 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/FluentProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/FluentProducerTemplate.java
@@ -59,7 +59,7 @@ public class FluentProducerTemplate {
*
* @param key the key of the header
* @param value the value of the header
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate withHeader(String key, Object value) {
if (headers == null) {
@@ -74,7 +74,7 @@ public class FluentProducerTemplate {
/**
* Remove the headers.
*
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate clearHeaders() {
if (headers != null) {
@@ -88,7 +88,7 @@ public class FluentProducerTemplate {
* Set the message body
*
* @param body the body
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate withBody(Object body) {
this.body = body;
@@ -97,9 +97,24 @@ public class FluentProducerTemplate {
}
/**
+ * Set the message body after converting it to the given type
+ *
+ * @param body the body
+ * @param type the type which the body should be converted to
+ * @return this FluentProducerTemplate instance
+ */
+ public FluentProducerTemplate withBodyAs(Object body, Class<?> type) {
+ this.body = type != null
+ ? context.getTypeConverter().convertTo(type, body)
+ : body;
+
+ return this;
+ }
+
+ /**
* Remove the body.
*
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate clearBody() {
this.body = null;
@@ -197,7 +212,7 @@ public class FluentProducerTemplate {
* Set the message body
*
* @param endpointUri the endpoint URI to send to
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate to(String endpointUri) {
return to(context.getEndpoint(endpointUri));
@@ -207,7 +222,7 @@ public class FluentProducerTemplate {
* Set the message body
*
* @param endpoint the endpoint to send to
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public FluentProducerTemplate to(Endpoint endpoint) {
this.endpoint = endpoint;
@@ -290,15 +305,9 @@ public class FluentProducerTemplate {
* @throws CamelExecutionException
*/
public Exchange send() throws CamelExecutionException {
- Exchange result = exchangeSupplier != null
+ return exchangeSupplier != null
? template().send(endpoint, exchangeSupplier.get())
: template().send(endpoint, processorSupplier.get());
-
- // TODO: validate
- // must invoke extract result body in case of exception to be rethrown
- //ExchangeHelper.extractResultBody(result, null);
-
- return result;
}
/**
@@ -320,7 +329,7 @@ public class FluentProducerTemplate {
* Create the FluentProducerTemplate by setting the camel context
*
* @param context the camel context
- * @return ProducerTemplate builder
+ * @return this FluentProducerTemplate instance
*/
public static FluentProducerTemplate on(CamelContext context) {
return new FluentProducerTemplate(context);
http://git-wip-us.apache.org/repos/asf/camel/blob/13bd2a7f/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java b/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
index c95a8ad..29d8dc0 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.builder;
+import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
@@ -57,6 +58,37 @@ public class FluentProducerTemplateTest extends ContextTestSupport {
assertEquals("Bye Bye World", result);
}
+ public void testInOutWithBodyConversion() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedBodiesReceived(11);
+
+ Object result = FluentProducerTemplate.on(context)
+ .withBodyAs("10", Integer.class)
+ .to("direct:sum")
+ .request();
+
+ assertMockEndpointsSatisfied();
+
+ assertEquals(11, result);
+ }
+
+ public void testInOutWithBodyConversionFault() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(0);
+
+ try {
+ FluentProducerTemplate.on(context)
+ .withBodyAs("10", Double.class)
+ .to("direct:sum")
+ .request();
+ } catch (CamelExecutionException e) {
+ assertTrue(e.getCause() instanceof IllegalArgumentException);
+ assertEquals("Expected body of type Integer", e.getCause().getMessage());
+ }
+
+ assertMockEndpointsSatisfied();
+ }
+
public void testFault() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(0);
@@ -71,7 +103,6 @@ public class FluentProducerTemplateTest extends ContextTestSupport {
assertEquals("Faulty World", result);
}
- // TODO: to review
public void testExceptionUsingBody() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(0);
@@ -85,25 +116,9 @@ public class FluentProducerTemplateTest extends ContextTestSupport {
assertTrue(out.getException() instanceof IllegalArgumentException);
assertEquals("Forced exception by unit test", out.getException().getMessage());
- /*
- try {
- Exchange out = FluentProducerTemplate.on(context)
- .withBody("Hello World")
- .to("direct:exception")
- .send();
-
- assertTrue(out.isFailed());
- fail("Should have thrown RuntimeCamelException");
- } catch (RuntimeCamelException e) {
- assertTrue(e.getCause() instanceof IllegalArgumentException);
- assertEquals("Forced exception by unit test", e.getCause().getMessage());
- }
- */
-
assertMockEndpointsSatisfied();
}
- // TODO: to review
public void testExceptionUsingProcessor() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(0);
@@ -264,11 +279,19 @@ public class FluentProducerTemplateTest extends ContextTestSupport {
from("direct:in")
.process(exchange -> exchange.getIn().setBody("Bye World"))
.to("mock:result");
-
+ from("direct:sum")
+ .process(exchange -> {
+ Object body = exchange.getIn().getBody();
+ if (body instanceof Integer) {
+ exchange.getIn().setBody((Integer) body + 1);
+ } else {
+ throw new IllegalArgumentException("Expected body of type Integer");
+ }
+ })
+ .to("mock:result");
from("direct:out")
.process(exchange -> exchange.getOut().setBody("Bye Bye World"))
.to("mock:result");
-
from("direct:fault")
.process(exchange -> {
exchange.getOut().setFault(true);