This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new f2539d01342 CAMEL-20015: Move internal state in AbstractExchange to
Extended exchange where we have such kind of state. (code cleanup) (#18193)
f2539d01342 is described below
commit f2539d0134220d71b991652a135021eee394f706
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue May 27 16:10:53 2025 +0200
CAMEL-20015: Move internal state in AbstractExchange to Extended exchange
where we have such kind of state. (code cleanup) (#18193)
---
.../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