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 bfafd03 camel-core - Optimize fluent producer template to reduce object allocations bfafd03 is described below commit bfafd03b4a402bde1ad3a429bc80d70ecdc69f07 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Apr 19 09:43:48 2021 +0200 camel-core - Optimize fluent producer template to reduce object allocations --- .../impl/engine/DefaultFluentProducerTemplate.java | 17 ++++++++++++----- .../camel/builder/FluentProducerTemplateTest.java | 9 +++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java index 61da95e..fbb8f34 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java @@ -477,18 +477,25 @@ public class DefaultFluentProducerTemplate extends ServiceSupport implements Flu private Processor defaultProcessor() { return exchange -> { - ObjectHelper.ifNotEmpty(headers, exchange.getIn().getHeaders()::putAll); - ObjectHelper.ifNotEmpty(body, exchange.getIn()::setBody); + if (headers != null) { + exchange.getIn().getHeaders().putAll(headers); + } + if (body != null) { + exchange.getIn().setBody(body); + } }; } private Processor defaultAsyncProcessor() { final Map<String, Object> headersCopy = ObjectHelper.isNotEmpty(this.headers) ? new HashMap<>(this.headers) : null; final Object bodyCopy = this.body; - return exchange -> { - ObjectHelper.ifNotEmpty(headersCopy, exchange.getIn().getHeaders()::putAll); - ObjectHelper.ifNotEmpty(bodyCopy, exchange.getIn()::setBody); + if (headersCopy != null) { + exchange.getIn().getHeaders().putAll(headersCopy); + } + if (bodyCopy != null) { + exchange.getIn().setBody(bodyCopy); + } }; } 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 b14aa92..6229f8c 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 @@ -429,6 +429,15 @@ public class FluentProducerTemplateTest extends ContextTestSupport { assertMockEndpointsSatisfied(); } + @Test + public void testPerformance() throws Exception { + FluentProducerTemplate fluent = context.createFluentProducerTemplate(); + for (int i = 0; i < 1000; i++) { + Object result = fluent.withBody("Camel").withHeader("foo", "" + i).to("direct:echo").request(); + assertEquals("CamelCamel" + i, result); + } + } + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() {