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;