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 2020/03/19 12:58:31 UTC
[camel] 02/02: CAMEL-14741: The
FluentProducerTemplate.withTemplateCustomizer is broken
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
commit 9da9495feb617f319e27dbb82aa396c6d909e676
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 19 13:45:00 2020 +0100
CAMEL-14741: The FluentProducerTemplate.withTemplateCustomizer is broken
---
.../main/java/org/apache/camel/FluentProducerTemplate.java | 12 ++++++------
.../camel/impl/engine/DefaultFluentProducerTemplate.java | 12 ++++++++++++
.../org/apache/camel/builder/FluentProducerTemplateTest.java | 11 +++++++++++
3 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java b/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
index 87a00ab..9175510 100644
--- a/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
+++ b/core/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
@@ -182,16 +182,16 @@ public interface FluentProducerTemplate extends Service {
*
* <pre>
* {@code
- * FluentProducerTemplate.on(context)
- * .withTemplateCustomizer(
- * template -> {
- * template.setExecutorService(myExecutor);
- * template.setMaximumCacheSize(10);
+ * FluentProducerTemplate fluent = context.createFluentProducerTemplate();
+ * fluent.withTemplateCustomizer(
+ * t -> {
+ * t.setExecutorService(myExecutor);
+ * t.setMaximumCacheSize(10);
* }
* )
* .withBody("the body")
* .to("direct:start")
- * .request()}
+ * .send()}
* </pre>
*
* Note that it is invoked only once.
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
index 9a19e65..74dda14 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
@@ -177,6 +177,14 @@ public class DefaultFluentProducerTemplate extends ServiceSupport implements Flu
@Override
public FluentProducerTemplate withTemplateCustomizer(final Consumer<ProducerTemplate> templateCustomizer) {
this.templateCustomizer.set(templateCustomizer);
+
+ if (template != null) {
+ // need to re-initialize template since we have a customizer
+ ServiceHelper.stopService(template);
+ templateCustomizer.accept(template);
+ ServiceHelper.startService(template);
+ }
+
return this;
}
@@ -374,6 +382,10 @@ public class DefaultFluentProducerTemplate extends ServiceSupport implements Flu
return defaultEndpoint;
}
+ if (template != null && template.getDefaultEndpoint() != null) {
+ return template.getDefaultEndpoint();
+ }
+
throw new IllegalArgumentException("No endpoint configured on FluentProducerTemplate. You can configure an endpoint with to(uri)");
}
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
index d4b3f7f..d3922c1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/FluentProducerTemplateTest.java
@@ -329,6 +329,17 @@ public class FluentProducerTemplateTest extends ContextTestSupport {
assertEquals("body-2", exchange2.getIn().getBody(String.class));
}
+ @Test
+ public void testWithCustomizer() throws Exception {
+ getMockEndpoint("mock:custom").expectedBodiesReceived("Hello World");
+
+ FluentProducerTemplate fluent = context.createFluentProducerTemplate().withTemplateCustomizer(t -> t.setDefaultEndpointUri("mock:custom"));
+
+ fluent.withBody("Hello World").send();
+
+ assertMockEndpointsSatisfied();
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {