This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch rb in repository https://gitbox.apache.org/repos/asf/camel.git
commit 90c94695b7a1815be44d589ecd890fb7c6d62a4c Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue May 27 15:46:54 2025 +0200 CAMEL-20015: Move internal state in AbstractExchange to Extended exchange where we have such kind of state. (code cleanup) --- .../java/org/apache/camel/ExchangeExtension.java | 32 +++++++++++++++++++ .../org/apache/camel/support/AbstractExchange.java | 21 ++++++------ .../org/apache/camel/support/DefaultExchange.java | 1 + .../camel/support/DefaultPooledExchange.java | 3 -- .../camel/support/ExtendedExchangeExtension.java | 37 ++++++++++++++++++++++ 5 files changed, 79 insertions(+), 15 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 38e82f38d04..7f65b63e4a8 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 @@ -195,6 +195,38 @@ public interface ExchangeExtension { */ void setNotifyEvent(boolean notifyEvent); + /** + * Returns true if this exchange is marked for rollback + */ + boolean isRollbackOnly(); + + /** + * Sets whether to mark this exchange for rollback + */ + void setRollbackOnly(boolean rollbackOnly); + + /** + * Returns true if this exchange is marked for rollback (only last transaction section) + */ + boolean isRollbackOnlyLast(); + + /** + * Sets whether to mark this exchange for rollback (only last transaction section) + */ + void setRollbackOnlyLast(boolean rollbackOnlyLast); + + /** + * Returns true if this exchange is marked to stop and not continue routing. + */ + boolean isRouteStop(); + + /** + * Sets whether this exchange is marked to stop and not continue routing. + * + * @param routeStop <tt>true</tt> to stop routing + */ + void setRouteStop(boolean routeStop); + /** * To copy the internal properties from this exchange to the target exchange * <p/> 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 fbfdbf5b46e..efbca5cab88 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 @@ -57,9 +57,6 @@ abstract class AbstractExchange implements Exchange { protected Exception exception; protected String exchangeId; protected ExchangePattern pattern; - protected boolean routeStop; - protected boolean rollbackOnly; - protected boolean rollbackOnlyLast; protected Map<String, SafeCopyProperty> safeCopyProperties; protected ExchangeVariableRepository variableRepository; private final ExtendedExchangeExtension privateExtension; @@ -110,14 +107,14 @@ abstract class AbstractExchange implements Exchange { } setException(parent.exception); - setRouteStop(parent.routeStop); - setRollbackOnly(parent.rollbackOnly); - setRollbackOnlyLast(parent.rollbackOnlyLast); privateExtension.setNotifyEvent(parent.getExchangeExtension().isNotifyEvent()); privateExtension.setRedeliveryExhausted(parent.getExchangeExtension().isRedeliveryExhausted()); privateExtension.setErrorHandlerHandled(parent.getExchangeExtension().getErrorHandlerHandled()); privateExtension.setStreamCacheDisabled(parent.getExchangeExtension().isStreamCacheDisabled()); + privateExtension.setRollbackOnly(parent.getExchangeExtension().isRollbackOnly()); + privateExtension.setRollbackOnlyLast(parent.getExchangeExtension().isRollbackOnlyLast()); + privateExtension.setRouteStop(parent.getExchangeExtension().isRouteStop()); if (parent.hasVariables()) { if (this.variableRepository == null) { @@ -639,12 +636,12 @@ abstract class AbstractExchange implements Exchange { @Override public boolean isRouteStop() { - return routeStop; + return privateExtension.isRouteStop(); } @Override public void setRouteStop(boolean routeStop) { - this.routeStop = routeStop; + privateExtension.setRouteStop(routeStop); } @Override @@ -654,22 +651,22 @@ abstract class AbstractExchange implements Exchange { @Override public boolean isRollbackOnly() { - return rollbackOnly; + return privateExtension.isRollbackOnly(); } @Override public void setRollbackOnly(boolean rollbackOnly) { - this.rollbackOnly = rollbackOnly; + privateExtension.setRollbackOnly(rollbackOnly); } @Override public boolean isRollbackOnlyLast() { - return rollbackOnlyLast; + return privateExtension.isRollbackOnlyLast(); } @Override public void setRollbackOnlyLast(boolean rollbackOnlyLast) { - this.rollbackOnlyLast = rollbackOnlyLast; + privateExtension.setRollbackOnlyLast(rollbackOnlyLast); } @Override diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java index 5eae5f92755..cb4d4728fc3 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java @@ -30,6 +30,7 @@ import org.apache.camel.clock.Clock; * The default and only implementation of {@link Exchange}. */ public final class DefaultExchange extends AbstractExchange { + private final Clock timeInfo; DefaultExchange(CamelContext context, EnumMap<ExchangePropertyKey, Object> internalProperties, diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultPooledExchange.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultPooledExchange.java index a9b2a9c68e0..9d965c16e8d 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultPooledExchange.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultPooledExchange.java @@ -110,9 +110,6 @@ public final class DefaultPooledExchange extends AbstractExchange implements Poo // reset pattern to original this.pattern = originalPattern; // do not reset endpoint/fromRouteId as it would be the same consumer/endpoint again - this.routeStop = false; - this.rollbackOnly = false; - this.rollbackOnlyLast = false; getExchangeExtension().reset(); 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 df037c91afe..202c8e63e7f 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 @@ -48,6 +48,9 @@ public class ExtendedExchangeExtension implements ExchangeExtension { private boolean notifyEvent; private boolean interruptable = true; private boolean interrupted; + private boolean routeStop; + private boolean rollbackOnly; + private boolean rollbackOnlyLast; private AsyncCallback defaultConsumerCallback; // optimize (do not reset) private UnitOfWork unitOfWork; private List<Synchronization> onCompletions; @@ -270,6 +273,36 @@ public class ExtendedExchangeExtension implements ExchangeExtension { } } + @Override + public boolean isRollbackOnly() { + return rollbackOnly; + } + + @Override + public void setRollbackOnly(boolean rollbackOnly) { + this.rollbackOnly = rollbackOnly; + } + + @Override + public boolean isRollbackOnlyLast() { + return rollbackOnlyLast; + } + + @Override + public void setRollbackOnlyLast(boolean rollbackOnlyLast) { + this.rollbackOnlyLast = rollbackOnlyLast; + } + + @Override + public boolean isRouteStop() { + return routeStop; + } + + @Override + public void setRouteStop(boolean routeStop) { + this.routeStop = routeStop; + } + @Override public <T> T getInOrNull(Class<T> type) { return this.exchange.getInOrNull(type); @@ -336,6 +369,7 @@ public class ExtendedExchangeExtension implements ExchangeExtension { this.exchange.variableRepository.clear(); } + this.externalRedelivered = RedeliveryTraitPayload.UNDEFINED_REDELIVERY; setHistoryNodeId(null); setHistoryNodeLabel(null); setTransacted(false); @@ -345,6 +379,9 @@ public class ExtendedExchangeExtension implements ExchangeExtension { setRedeliveryExhausted(false); setErrorHandlerHandled(null); setStreamCacheDisabled(false); + setRollbackOnly(false); + setRollbackOnlyLast(false); + setRouteStop(false); } @Override