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 <[email protected]> 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
