This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 5f328df CAMEL-12520: FluentProducerTemplate withExchange is only allowed for send method. 5f328df is described below commit 5f328df79e74145124daff5b3a69638cb05937c1 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Aug 16 10:45:20 2018 +0200 CAMEL-12520: FluentProducerTemplate withExchange is only allowed for send method. --- .../org/apache/camel/FluentProducerTemplate.java | 4 ++++ .../builder/DefaultFluentProducerTemplate.java | 4 ++++ .../camel/builder/FluentProducerTemplateTest.java | 24 ++++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java index 3a37890..87d4044 100644 --- a/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java +++ b/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java @@ -201,6 +201,8 @@ public interface FluentProducerTemplate extends Service { /** * Set the exchange to use for send. * + * When using withExchange then you must use the send method (request is not supported). + * * @param exchange the exchange */ FluentProducerTemplate withExchange(Exchange exchange); @@ -209,6 +211,8 @@ public interface FluentProducerTemplate extends Service { * Set the exchangeSupplier which will be invoke to get the exchange to be * used for send. * + * When using withExchange then you must use the send method (request is not supported). + * * @param exchangeSupplier the supplier */ FluentProducerTemplate withExchange(Supplier<Exchange> exchangeSupplier); diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java index b59af2f..ccfdda9 100644 --- a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java +++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java @@ -230,6 +230,10 @@ public class DefaultFluentProducerTemplate extends ServiceSupport implements Flu @Override @SuppressWarnings("unchecked") public <T> T request(Class<T> type) throws CamelExecutionException { + if (exchangeSupplier.isPresent()) { + throw new IllegalArgumentException("withExchange not supported on FluentProducerTemplate.request method. Use send method instead."); + } + // Determine the target endpoint final Endpoint target = target(); 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 660e86d..570efd4 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 @@ -260,6 +260,30 @@ public class FluentProducerTemplateTest extends ContextTestSupport { assertMockEndpointsSatisfied(); } + public void testWithExchange() throws Exception { + Exchange exchange = ExchangeBuilder.anExchange(context) + .withBody("Hello!") + .withPattern(ExchangePattern.InOut) + .build(); + + exchange = context.createFluentProducerTemplate() + .withExchange(exchange) + .to("direct:in") + .send(); + + assertEquals("Bye World", exchange.getMessage().getBody()); + + try { + String out = context.createFluentProducerTemplate() + .withExchange(exchange) + .to("direct:in") + .request(String.class); + fail("Should throw exception"); + } catch (IllegalArgumentException e) { + assertEquals("withExchange not supported on FluentProducerTemplate.request method. Use send method instead.", e.getMessage()); + } + } + public void testRequestBody() throws Exception { // with endpoint as string uri FluentProducerTemplate template = DefaultFluentProducerTemplate.on(context);