You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/04/25 20:31:57 UTC

[camel] 02/02: CAMEL-15105: move the fromEndpoint instance to the extension

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

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 19c69d73efc55b608d30f1408eb833939e7f3b0c
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Apr 25 18:53:29 2023 +0200

    CAMEL-15105: move the fromEndpoint instance to the extension
---
 .../src/main/java/org/apache/camel/ExchangeExtension.java        | 5 +++++
 .../src/main/java/org/apache/camel/support/AbstractExchange.java | 9 ++++-----
 .../java/org/apache/camel/support/ExtendedExchangeExtension.java | 8 +++++++-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java b/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
index 9ce5fa7a014..8d412185d9f 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
@@ -43,6 +43,11 @@ public interface ExchangeExtension {
      */
     void setFromEndpoint(Endpoint fromEndpoint);
 
+    /**
+     * Returns the endpoint which originated this message exchange. See {@link Exchange#getFromEndpoint()} for details.
+     **/
+    Endpoint getFromEndpoint();
+
     /**
      * Sets the route id which originated this message exchange. This method should typically only be called by the
      * internal framework.
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java b/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
index 2ee35f307e8..b6ee98fda89 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
@@ -68,7 +68,6 @@ class AbstractExchange implements Exchange {
     String exchangeId;
     UnitOfWork unitOfWork;
     ExchangePattern pattern;
-    Endpoint fromEndpoint;
     String fromRouteId;
     List<Synchronization> onCompletions;
     Boolean externalRedelivered;
@@ -104,29 +103,29 @@ class AbstractExchange implements Exchange {
         this.context = parent.getContext();
         this.pattern = parent.getPattern();
         this.created = parent.getCreated();
-        this.fromEndpoint = parent.getFromEndpoint();
         this.fromRouteId = parent.getFromRouteId();
         this.unitOfWork = parent.getUnitOfWork();
 
         privateExtension = new ExtendedExchangeExtension(this);
+        privateExtension.setFromEndpoint(parent.getFromEndpoint());
     }
 
     public AbstractExchange(Endpoint fromEndpoint) {
         this.context = fromEndpoint.getCamelContext();
         this.pattern = fromEndpoint.getExchangePattern();
         this.created = System.currentTimeMillis();
-        this.fromEndpoint = fromEndpoint;
 
         privateExtension = new ExtendedExchangeExtension(this);
+        privateExtension.setFromEndpoint(fromEndpoint);
     }
 
     public AbstractExchange(Endpoint fromEndpoint, ExchangePattern pattern) {
         this.context = fromEndpoint.getCamelContext();
         this.pattern = pattern;
         this.created = System.currentTimeMillis();
-        this.fromEndpoint = fromEndpoint;
 
         privateExtension = new ExtendedExchangeExtension(this);
+        privateExtension.setFromEndpoint(fromEndpoint);
     }
 
     @Override
@@ -609,7 +608,7 @@ class AbstractExchange implements Exchange {
 
     @Override
     public Endpoint getFromEndpoint() {
-        return fromEndpoint;
+        return privateExtension.getFromEndpoint();
     }
 
     @Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java b/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
index ae1934a9dbe..0972267c223 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
@@ -32,6 +32,7 @@ public class ExtendedExchangeExtension implements ExchangeExtension {
     private final AbstractExchange exchange;
     private Boolean errorHandlerHandled;
     private boolean failureHandled;
+    private Endpoint fromEndpoint;
 
     ExtendedExchangeExtension(AbstractExchange exchange) {
         this.exchange = exchange;
@@ -39,7 +40,12 @@ public class ExtendedExchangeExtension implements ExchangeExtension {
 
     @Override
     public void setFromEndpoint(Endpoint fromEndpoint) {
-        this.exchange.fromEndpoint = fromEndpoint;
+        this.fromEndpoint = fromEndpoint;
+    }
+
+    @Override
+    public Endpoint getFromEndpoint() {
+        return fromEndpoint;
     }
 
     @Override