This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch var-fail
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b54b3ba73feb4d4cff183dcd4ed048788e7116d5
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Mar 23 10:26:55 2024 +0100

    CAMEL-20607: camel-core - Using variableReceive should only set result if 
exchange was process succesfully
---
 .../org/apache/camel/processor/SendDynamicProcessor.java     |  8 ++++----
 .../main/java/org/apache/camel/processor/SendProcessor.java  | 12 +++++-------
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 94c41c1b107..decf336be57 100644
--- 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -237,10 +237,10 @@ public class SendDynamicProcessor extends 
AsyncProcessorSupport implements IdAwa
                     ServiceHelper.stopAndShutdownService(endpoint);
                 }
                 // result should be stored in variable instead of message body
-                if (ExchangeHelper.shouldSetVariableResult(exchange, 
variableReceive)) {
-                    
ExchangeHelper.setVariableFromMessageBodyAndHeaders(exchange, variableReceive, 
exchange.getMessage());
-                    exchange.getMessage().setBody(originalBody);
-                    exchange.getMessage().setHeaders(originalHeaders);
+                if (ExchangeHelper.shouldSetVariableResult(target, 
variableReceive)) {
+                    
ExchangeHelper.setVariableFromMessageBodyAndHeaders(target, variableReceive, 
target.getMessage());
+                    target.getMessage().setBody(originalBody);
+                    target.getMessage().setHeaders(originalHeaders);
                 }
                 // signal we are done
                 c.done(doneSync);
diff --git 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
index 0f0bde0a265..37dd575fccd 100644
--- 
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ 
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -179,11 +179,11 @@ public class SendProcessor extends AsyncProcessorSupport 
implements Traceable, E
                 ac = doneSync -> {
                     try {
                         // result should be stored in variable instead of 
message body/headers
-                        if (ExchangeHelper.shouldSetVariableResult(exchange, 
variableReceive)) {
-                            
ExchangeHelper.setVariableFromMessageBodyAndHeaders(exchange, variableReceive,
-                                    exchange.getMessage());
-                            exchange.getMessage().setBody(originalBody);
-                            exchange.getMessage().setHeaders(originalHeaders);
+                        if (ExchangeHelper.shouldSetVariableResult(target, 
variableReceive)) {
+                            
ExchangeHelper.setVariableFromMessageBodyAndHeaders(target, variableReceive,
+                                    target.getMessage());
+                            target.getMessage().setBody(originalBody);
+                            target.getMessage().setHeaders(originalHeaders);
                         }
                         // restore previous MEP
                         target.setPattern(existingPattern);
@@ -202,8 +202,6 @@ public class SendProcessor extends AsyncProcessorSupport 
implements Traceable, E
                 if (variableSend != null) {
                     Object value = ExchangeHelper.getVariable(exchange, 
variableSend);
                     exchange.getMessage().setBody(value);
-                    // TODO: empty headers or
-
                 }
 
                 LOG.debug(">>>> {} {}", destination, exchange);

Reply via email to