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/02/14 12:53:53 UTC

[camel] 08/23: CAMEL-15105: rework managing error handling properties in the exchange

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 cd3f7313842b81a1656333cac69bdff243fd1b2f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Nov 22 18:19:06 2022 +0100

    CAMEL-15105: rework managing error handling properties in the exchange
---
 ...ansactionalClientDataSourceOnExceptionRedeliveryTest.java |  3 +--
 .../TransactionalClientDataSourceRedeliveryTest.java         |  3 +--
 .../apache/camel/impl/event/ExchangeFailureHandledEvent.java |  4 ++--
 .../apache/camel/processor/FatalFallbackErrorHandler.java    |  4 ++--
 .../aggregate/ShareUnitOfWorkAggregationStrategy.java        | 12 +++++-------
 .../aggregator/BodyOnlyAggregationStrategyTest.java          |  5 ++---
 .../itest/jetty/JettySimulateFailoverRoundRobinTest.java     |  2 +-
 7 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceOnExceptionRedeliveryTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceOnExceptionRedeliveryTest.java
index 5b1f5a733eb..9a77580dc28 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceOnExceptionRedeliveryTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceOnExceptionRedeliveryTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.spring.interceptor;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
@@ -51,7 +50,7 @@ public class TransactionalClientDataSourceOnExceptionRedeliveryTest extends Tran
         assertEquals(true, out.getIn().getHeader(Exchange.REDELIVERED));
         assertEquals(3, out.getIn().getHeader(Exchange.REDELIVERY_COUNTER));
         assertEquals(true, out.getProperty(Exchange.FAILURE_HANDLED));
-        assertEquals(false, out.adapt(ExtendedExchange.class).isErrorHandlerHandled());
+        assertEquals(false, out.getExchangeExtension().isErrorHandlerHandled());
     }
 
     @Override
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceRedeliveryTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceRedeliveryTest.java
index 9d99e469684..361183d7dea 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceRedeliveryTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceRedeliveryTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.spring.interceptor;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
@@ -51,7 +50,7 @@ public class TransactionalClientDataSourceRedeliveryTest extends TransactionalCl
         assertEquals(true, out.getIn().getHeader(Exchange.REDELIVERED));
         assertEquals(4, out.getIn().getHeader(Exchange.REDELIVERY_COUNTER));
         assertEquals(true, out.getProperty(Exchange.FAILURE_HANDLED));
-        assertEquals(false, out.adapt(ExtendedExchange.class).isErrorHandlerHandled());
+        assertEquals(false, out.getExchangeExtension().isErrorHandlerHandled());
     }
 
     @Override
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
index b7442de7579..229588e57a6 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
@@ -36,8 +36,8 @@ public class ExchangeFailureHandledEvent extends AbstractExchangeEvent implement
         this.failureHandler = failureHandler;
         this.deadLetterChannel = deadLetterChannel;
         this.deadLetterUri = deadLetterUri;
-        this.handled = source.adapt(ExtendedExchange.class).isErrorHandlerHandledSet()
-                && source.adapt(ExtendedExchange.class).isErrorHandlerHandled();
+        this.handled = source.getExchangeExtension().isErrorHandlerHandledSet()
+                && source.getExchangeExtension().isErrorHandlerHandled();
     }
 
     @Override
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
index 54e3b742eeb..168797155da 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
@@ -135,12 +135,12 @@ public class FatalFallbackErrorHandler extends DelegateAsyncProcessor implements
                         if (deadLetterChannel) {
                             // special for dead letter channel as we want to let it determine what to do, depending how
                             // it has been configured
-                            exchange.adapt(ExtendedExchange.class).setErrorHandlerHandled(null);
+                            exchange.getExchangeExtension().setErrorHandlerHandled(null);
                         } else {
                             // mark this exchange as already been error handler handled (just by having this property)
                             // the false value mean the caught exception will be kept on the exchange, causing the
                             // exception to be propagated back to the caller, and to break out routing
-                            exchange.adapt(ExtendedExchange.class).setErrorHandlerHandled(false);
+                            exchange.getExchangeExtension().setErrorHandlerHandled(false);
                         }
                     }
                 } finally {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
index 06e97ad4983..6127301e754 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
@@ -21,7 +21,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedExchange;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
 
@@ -108,10 +107,9 @@ public final class ShareUnitOfWorkAggregationStrategy extends ServiceSupport imp
     }
 
     protected void propagateFailure(Exchange answer, Exchange newExchange) {
-        ExtendedExchange nee = (ExtendedExchange) newExchange;
         // if new exchange failed then propagate all the error related properties to the answer
-        if (nee.isFailed() || nee.isRollbackOnly() || nee.isRollbackOnlyLast()
-                || nee.isErrorHandlerHandledSet() && nee.isErrorHandlerHandled()) {
+        if (newExchange.isFailed() || newExchange.isRollbackOnly() || newExchange.isRollbackOnlyLast()
+                || newExchange.getExchangeExtension().isErrorHandlerHandledSet() && newExchange.getExchangeExtension().isErrorHandlerHandled()) {
             if (newExchange.getException() != null) {
                 answer.setException(newExchange.getException());
             }
@@ -127,9 +125,9 @@ public final class ShareUnitOfWorkAggregationStrategy extends ServiceSupport imp
                 answer.setProperty(ExchangePropertyKey.FAILURE_ROUTE_ID,
                         newExchange.getProperty(ExchangePropertyKey.FAILURE_ROUTE_ID));
             }
-            if (newExchange.adapt(ExtendedExchange.class).getErrorHandlerHandled() != null) {
-                answer.adapt(ExtendedExchange.class)
-                        .setErrorHandlerHandled(newExchange.adapt(ExtendedExchange.class).getErrorHandlerHandled());
+            if (newExchange.getExchangeExtension().getErrorHandlerHandled() != null) {
+                answer.getExchangeExtension()
+                        .setErrorHandlerHandled(newExchange.getExchangeExtension().getErrorHandlerHandled());
             }
             if (newExchange.getProperty(ExchangePropertyKey.FAILURE_HANDLED) != null) {
                 answer.setProperty(ExchangePropertyKey.FAILURE_HANDLED,
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java
index 854d781a8e7..a0eb6d43723 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java
@@ -20,7 +20,6 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.jupiter.api.Test;
 
@@ -75,8 +74,8 @@ public class BodyOnlyAggregationStrategyTest extends ContextTestSupport {
         public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
             oldExchange.getIn().setBody(newExchange.getIn().getBody());
 
-            oldExchange.adapt(ExtendedExchange.class).setErrorHandlerHandled(
-                    newExchange.adapt(ExtendedExchange.class).getErrorHandlerHandled());
+            oldExchange.getExchangeExtension().setErrorHandlerHandled(
+                    newExchange.getExchangeExtension().getErrorHandlerHandled());
 
             return oldExchange;
         }
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
index c9feb889d0b..cf45a712593 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
@@ -160,7 +160,7 @@ public class JettySimulateFailoverRoundRobinTest extends CamelTestSupport {
         private void prepareExchangeForFailover(Exchange exchange) {
             exchange.setException(null);
 
-            exchange.adapt(ExtendedExchange.class).setErrorHandlerHandled(null);
+            exchange.getExchangeExtension().setErrorHandlerHandled(null);
             exchange.setProperty(Exchange.FAILURE_HANDLED, null);
             exchange.setProperty(Exchange.EXCEPTION_CAUGHT, null);
             exchange.getIn().removeHeader(Exchange.REDELIVERED);