This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch opt-exchangekey
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/opt-exchangekey by this push:
new b1c8e01 CAMEL-16326: camel-core - Optimize usage of exchanage
properties for state in routing engine.
b1c8e01 is described below
commit b1c8e015a74dd6c211d9ca04917fc2b230c842f3
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Mar 11 22:19:50 2021 +0100
CAMEL-16326: camel-core - Optimize usage of exchanage properties for state
in routing engine.
---
.../camel/processor/transformer/ProcessorTransformer.java | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/transformer/ProcessorTransformer.java
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/transformer/ProcessorTransformer.java
index 8ca800d..70a086a 100644
---
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/transformer/ProcessorTransformer.java
+++
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/transformer/ProcessorTransformer.java
@@ -18,11 +18,12 @@ package org.apache.camel.processor.transformer;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
+import org.apache.camel.ExtendedExchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.spi.DataType;
import org.apache.camel.spi.Transformer;
-import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.DefaultExchange;
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
@@ -66,10 +67,12 @@ public class ProcessorTransformer extends Transformer {
}
LOG.debug("Sending to transform processor: {}", processor);
- // create a new exchange to use during transform to avoid side-effects
on original exchange
- Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false,
true);
- processor.process(copy);
- Message answer = copy.getMessage();
+ // must create a copy in this way
+ Exchange transformExchange = new DefaultExchange(exchange);
+ transformExchange.setIn(message);
+
transformExchange.adapt(ExtendedExchange.class).setProperties(exchange.getProperties());
+ processor.process(transformExchange);
+ Message answer = transformExchange.getMessage();
if (to.isJavaType()) {
Object answerBody = answer.getBody();