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

Reply via email to