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();

Reply via email to