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;
}