You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/04/05 13:40:47 UTC

[camel] 01/02: CAMEL-16834: error handler in model DSL. WIP

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch errorhandler-in-dsl
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5bd40315f550354012b98b505abf7dd1c6bdb2ec
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Apr 5 14:26:17 2022 +0200

    CAMEL-16834: error handler in model DSL. WIP
---
 .../camel/model/RedeliveryPolicyDefinition.java    | 13 +++++++-
 .../errorhandler/DeadLetterChannelDefinition.java  | 20 ++---------
 .../DefaultErrorHandlerDefinition.java             | 39 +++++++++++++++++++++-
 .../TransactionErrorHandlerDefinition.java         | 19 +++++++++++
 4 files changed, 71 insertions(+), 20 deletions(-)

diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
index 896739f3e5d..db5fcdebd05 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
@@ -22,15 +22,18 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.LoggingLevel;
+import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.spi.Metadata;
 
+import java.io.Serializable;
+
 /**
  * To configure re-delivery for error handling
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "redeliveryPolicy")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class RedeliveryPolicyDefinition {
+public class RedeliveryPolicyDefinition implements Cloneable {
 
     @XmlAttribute
     @Metadata(javaType = "java.lang.Integer")
@@ -110,6 +113,14 @@ public class RedeliveryPolicyDefinition {
         return "RedeliveryPolicy[maximumRedeliveries: " + maximumRedeliveries + "]";
     }
 
+    public RedeliveryPolicyDefinition copy() {
+        try {
+            return (RedeliveryPolicyDefinition) clone();
+        } catch (CloneNotSupportedException e) {
+            throw new RuntimeException("Could not clone: " + e, e);
+        }
+    }
+
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
index 41fc490a18f..b541bfa511f 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata;
 @Metadata(label = "configuration,error")
 @XmlRootElement(name = "deadLetterChannel")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class DeadLetterChannelDefinition extends DefaultErrorHandlerDefinition implements ErrorHandlerBuilder {
+public class DeadLetterChannelDefinition extends DefaultErrorHandlerDefinition {
 
     // TODO: fluent builders
     // TODO: label, java type, ref
@@ -84,25 +84,9 @@ public class DeadLetterChannelDefinition extends DefaultErrorHandlerDefinition i
     }
 
     protected void cloneBuilder(DeadLetterChannelDefinition other) {
-        other.setLoggerBean(getLoggerBean());
-        if (getRedeliveryPolicy() != null) {
-            // TODO: copy
-            //            other.setRedeliveryPolicy(getRedeliveryPolicy().copy());
-        }
-        other.setOnRedeliveryProcessor(getOnRedeliveryProcessor());
-        other.setOnRedeliveryRef(getOnRedeliveryRef());
-        other.setRetryWhilePredicate(getRetryWhilePredicate());
-        other.setRetryWhileRef(getRetryWhileRef());
         other.setDeadLetterUri(getDeadLetterUri());
-        other.setOnPrepareFailureProcessor(getOnPrepareFailureProcessor());
-        other.setOnPrepareFailureRef(getOnPrepareFailureRef());
-        other.setOnExceptionOccurredProcessor(getOnExceptionOccurredProcessor());
-        other.setOnExceptionOccurredRef(getOnExceptionOccurredRef());
         other.setDeadLetterHandleNewException(getDeadLetterHandleNewException());
-        other.setUseOriginalMessage(getUseOriginalMessage());
-        other.setUseOriginalBody(getUseOriginalBody());
-        other.setExecutorServiceBean(getExecutorServiceBean());
-        other.setExecutorServiceRef(getExecutorServiceRef());
+        super.cloneBuilder(other);
     }
 
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
index d65bf96944f..68e2ce03d5f 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
@@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.model.RedeliveryPolicyDefinition;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.spi.CamelLogger;
@@ -39,7 +40,7 @@ import org.apache.camel.spi.Metadata;
 @Metadata(label = "configuration,error")
 @XmlRootElement(name = "defaultErrorHandler")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class DefaultErrorHandlerDefinition extends BaseErrorHandlerDefinition {
+public class DefaultErrorHandlerDefinition extends BaseErrorHandlerDefinition implements ErrorHandlerBuilder {
 
     // TODO: fluent builders
     // TODO: label, java type, ref
@@ -88,6 +89,42 @@ public class DefaultErrorHandlerDefinition extends BaseErrorHandlerDefinition {
     @XmlElement
     private RedeliveryPolicyDefinition redeliveryPolicy;
 
+    @Override
+    public boolean supportTransacted() {
+        return false;
+    }
+
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        DefaultErrorHandlerDefinition answer = new DefaultErrorHandlerDefinition();
+        cloneBuilder(answer);
+        return answer;
+    }
+
+    protected void cloneBuilder(DefaultErrorHandlerDefinition other) {
+        other.setExecutorServiceBean(getExecutorServiceBean());
+        other.setExecutorServiceRef(getExecutorServiceRef());
+        other.setLevel(getLevel());
+        other.setLogName(getLogName());
+        other.setLoggerBean(getLoggerBean());
+        other.setLoggerRef(getLoggerRef());
+        other.setOnExceptionOccurredProcessor(getOnExceptionOccurredProcessor());
+        other.setOnExceptionOccurredRef(getOnExceptionOccurredRef());
+        other.setOnPrepareFailureProcessor(getOnPrepareFailureProcessor());
+        other.setOnPrepareFailureRef(getOnPrepareFailureRef());
+        other.setOnRedeliveryProcessor(getOnRedeliveryProcessor());
+        other.setOnRedeliveryRef(getOnRedeliveryRef());
+        other.setRedeliveryPolicyRef(getRedeliveryPolicyRef());
+        other.setRetryWhilePredicate(getRetryWhilePredicate());
+        other.setRetryWhileRef(getRetryWhileRef());
+        other.setRollbackLoggingLevel(getRollbackLoggingLevel());
+        other.setUseOriginalBody(getUseOriginalBody());
+        other.setUseOriginalMessage(getUseOriginalMessage());
+        if (getRedeliveryPolicy() != null) {
+            other.setRedeliveryPolicy(getRedeliveryPolicy().copy());
+        }
+    }
+
     public String getLoggerRef() {
         return loggerRef;
     }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
index cb5eef529bb..3c2525660c3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
@@ -21,6 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.spi.Metadata;
 
 /**
@@ -40,6 +41,24 @@ public class TransactionErrorHandlerDefinition extends DefaultErrorHandlerDefini
     @XmlAttribute
     private String transactionManagerRef;
 
+    @Override
+    public boolean supportTransacted() {
+        return true;
+    }
+
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        TransactionErrorHandlerDefinition answer = new TransactionErrorHandlerDefinition();
+        cloneBuilder(answer);
+        return answer;
+    }
+
+    protected void cloneBuilder(TransactionErrorHandlerDefinition other) {
+        other.setTransactionManagerRef(getTransactionManagerRef());
+        other.setTransactionTemplateRef(getTransactionTemplateRef());
+        super.cloneBuilder(other);
+    }
+
     public String getTransactionTemplateRef() {
         return transactionTemplateRef;
     }