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 2024/03/23 12:32:24 UTC

(camel) 04/05: CAMEL-20607: camel-core - Using variableReceive should only set result if exchange was process succesfully

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 <cl...@gmail.com>
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);