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 2021/04/19 07:44:31 UTC
[camel] branch master updated: camel-core - Optimize fluent
producer template to reduce object allocations
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 <cl...@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() {