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 5c5fa4803e6 CAMEL-20890: camel-core-model: Copy definitions to make 
deep copy for route templates to avoid side-effects when the template are 
reused to create multiple routes.
5c5fa4803e6 is described below

commit 5c5fa4803e64d0fdd98f77c625e99810af531ff1
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jun 20 07:07:37 2024 +0200

    CAMEL-20890: camel-core-model: Copy definitions to make deep copy for route 
templates to avoid side-effects when the template are reused to create multiple 
routes.
---
 .../errorhandler/BaseErrorHandlerDefinition.java   |  4 ++-
 .../errorhandler/DeadLetterChannelDefinition.java  | 11 ++++++++
 .../DefaultErrorHandlerDefinition.java             | 29 ++++++++++++++++++++++
 .../JtaTransactionErrorHandlerDefinition.java      | 12 +++++++++
 .../errorhandler/NoErrorHandlerDefinition.java     | 11 ++++++++
 .../errorhandler/RefErrorHandlerDefinition.java    |  9 +++++++
 .../SpringTransactionErrorHandlerDefinition.java   | 12 +++++++++
 .../TransactionErrorHandlerDefinition.java         | 10 ++++++++
 8 files changed, 97 insertions(+), 1 deletion(-)

diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
index 34ce65b8b96..11836208d7f 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
@@ -17,11 +17,13 @@
 package org.apache.camel.model.errorhandler;
 
 import org.apache.camel.ErrorHandlerFactory;
+import org.apache.camel.model.CopyableDefinition;
 import org.apache.camel.model.IdentifiedType;
 
 /**
  * Base class for error handler models.
  */
-abstract class BaseErrorHandlerDefinition extends IdentifiedType implements 
ErrorHandlerFactory {
+abstract class BaseErrorHandlerDefinition extends IdentifiedType
+        implements ErrorHandlerFactory, 
CopyableDefinition<BaseErrorHandlerDefinition> {
 
 }
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 854f34b3a36..26ef95f63da 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
@@ -43,6 +43,12 @@ public class DeadLetterChannelDefinition extends 
DefaultErrorHandlerDefinition {
     public DeadLetterChannelDefinition() {
     }
 
+    public DeadLetterChannelDefinition(DeadLetterChannelDefinition source) {
+        super(source);
+        this.deadLetterUri = source.deadLetterUri;
+        this.deadLetterHandleNewException = 
source.deadLetterHandleNewException;
+    }
+
     public DeadLetterChannelDefinition(String deadLetterUri) {
         this.deadLetterUri = deadLetterUri;
     }
@@ -51,6 +57,11 @@ public class DeadLetterChannelDefinition extends 
DefaultErrorHandlerDefinition {
         this.deadLetterUri = deadLetterUri.getEndpointUri();
     }
 
+    @Override
+    public DeadLetterChannelDefinition copyDefinition() {
+        return new DeadLetterChannelDefinition(this);
+    }
+
     @Override
     protected RedeliveryPolicyDefinition createRedeliveryPolicy() {
         RedeliveryPolicyDefinition answer = super.createRedeliveryPolicy();
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 47203584e28..d8086a96cd7 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
@@ -97,6 +97,35 @@ public class DefaultErrorHandlerDefinition extends 
BaseErrorHandlerDefinition {
     @Metadata(label = "advanced", javaType = 
"java.util.concurrent.ScheduledExecutorService")
     private String executorServiceRef;
 
+    public DefaultErrorHandlerDefinition() {
+    }
+
+    protected DefaultErrorHandlerDefinition(DefaultErrorHandlerDefinition 
source) {
+        this.loggerBean = source.loggerBean;
+        this.onRedeliveryProcessor = source.onRedeliveryProcessor;
+        this.onPrepareFailureProcessor = source.onPrepareFailureProcessor;
+        this.onExceptionOccurredProcessor = 
source.onExceptionOccurredProcessor;
+        this.executorServiceBean = source.executorServiceBean;
+        this.retryWhilePredicate = source.retryWhilePredicate;
+        this.redeliveryPolicy = source.redeliveryPolicy;
+        this.useOriginalMessage = source.useOriginalMessage;
+        this.useOriginalBody = source.useOriginalBody;
+        this.redeliveryPolicyRef = source.redeliveryPolicyRef;
+        this.loggerRef = source.loggerRef;
+        this.level = source.level;
+        this.logName = source.logName;
+        this.onRedeliveryRef = source.onRedeliveryRef;
+        this.onExceptionOccurredRef = source.onExceptionOccurredRef;
+        this.onPrepareFailureRef = source.onPrepareFailureRef;
+        this.retryWhileRef = source.retryWhileRef;
+        this.executorServiceRef = source.executorServiceRef;
+    }
+
+    @Override
+    public DefaultErrorHandlerDefinition copyDefinition() {
+        return new DefaultErrorHandlerDefinition(this);
+    }
+
     @Override
     public boolean supportTransacted() {
         return false;
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/JtaTransactionErrorHandlerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/JtaTransactionErrorHandlerDefinition.java
index 0eeb854e80f..8aff6d08392 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/JtaTransactionErrorHandlerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/JtaTransactionErrorHandlerDefinition.java
@@ -31,6 +31,18 @@ import org.apache.camel.spi.Metadata;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class JtaTransactionErrorHandlerDefinition extends 
TransactionErrorHandlerDefinition {
 
+    public JtaTransactionErrorHandlerDefinition() {
+    }
+
+    public 
JtaTransactionErrorHandlerDefinition(JtaTransactionErrorHandlerDefinition 
source) {
+        super(source);
+    }
+
+    @Override
+    public JtaTransactionErrorHandlerDefinition copyDefinition() {
+        return new JtaTransactionErrorHandlerDefinition(this);
+    }
+
     @Override
     public ErrorHandlerFactory cloneBuilder() {
         TransactionErrorHandlerDefinition answer = new 
JtaTransactionErrorHandlerDefinition();
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/NoErrorHandlerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/NoErrorHandlerDefinition.java
index aa0b232b3f1..a1e53b5640c 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/NoErrorHandlerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/NoErrorHandlerDefinition.java
@@ -36,6 +36,17 @@ public class NoErrorHandlerDefinition extends 
BaseErrorHandlerDefinition {
         return false;
     }
 
+    public NoErrorHandlerDefinition() {
+    }
+
+    public NoErrorHandlerDefinition(NoErrorHandlerDefinition source) {
+    }
+
+    @Override
+    public NoErrorHandlerDefinition copyDefinition() {
+        return new NoErrorHandlerDefinition(this);
+    }
+
     @Override
     public ErrorHandlerFactory cloneBuilder() {
         // clone is not needed
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/RefErrorHandlerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/RefErrorHandlerDefinition.java
index f819c0654c5..7c1b8109d71 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/RefErrorHandlerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/RefErrorHandlerDefinition.java
@@ -41,6 +41,15 @@ public class RefErrorHandlerDefinition extends 
BaseErrorHandlerDefinition {
     public RefErrorHandlerDefinition() {
     }
 
+    public RefErrorHandlerDefinition(RefErrorHandlerDefinition source) {
+        this.ref = source.ref;
+    }
+
+    @Override
+    public RefErrorHandlerDefinition copyDefinition() {
+        return new RefErrorHandlerDefinition(this);
+    }
+
     public RefErrorHandlerDefinition(String ref) {
         this.ref = ref;
     }
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/SpringTransactionErrorHandlerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/SpringTransactionErrorHandlerDefinition.java
index 39ed88db2f4..9ecee81c868 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/SpringTransactionErrorHandlerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/SpringTransactionErrorHandlerDefinition.java
@@ -31,6 +31,18 @@ import org.apache.camel.spi.Metadata;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class SpringTransactionErrorHandlerDefinition extends 
TransactionErrorHandlerDefinition {
 
+    public SpringTransactionErrorHandlerDefinition() {
+    }
+
+    public 
SpringTransactionErrorHandlerDefinition(SpringTransactionErrorHandlerDefinition 
source) {
+        super(source);
+    }
+
+    @Override
+    public SpringTransactionErrorHandlerDefinition copyDefinition() {
+        return new SpringTransactionErrorHandlerDefinition(this);
+    }
+
     @Override
     public ErrorHandlerFactory cloneBuilder() {
         TransactionErrorHandlerDefinition answer = new 
SpringTransactionErrorHandlerDefinition();
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 e7391d99b30..03799a3f137 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
@@ -37,6 +37,16 @@ public abstract class TransactionErrorHandlerDefinition 
extends DefaultErrorHand
     @Metadata(javaType = "org.apache.camel.LoggingLevel", defaultValue = 
"WARN", enums = "TRACE,DEBUG,INFO,WARN,ERROR,OFF")
     private String rollbackLoggingLevel;
 
+    public TransactionErrorHandlerDefinition() {
+    }
+
+    public TransactionErrorHandlerDefinition(TransactionErrorHandlerDefinition 
source) {
+        super(source);
+        this.transactedPolicy = source.transactedPolicy;
+        this.transactedPolicyRef = source.transactedPolicyRef;
+        this.rollbackLoggingLevel = source.rollbackLoggingLevel;
+    }
+
     @Override
     public boolean supportTransacted() {
         return true;

Reply via email to