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 2020/12/14 09:44:18 UTC

[camel] branch camel-3.7.x updated: CAMEL-15942: spring xml on camel-spring-boot may add route policy factory twice

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

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


The following commit(s) were added to refs/heads/camel-3.7.x by this push:
     new 58c538e  CAMEL-15942: spring xml on camel-spring-boot may add route policy factory twice
58c538e is described below

commit 58c538eb68ac6912f46fe99a696d251e8f6d74a1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 14 10:42:56 2020 +0100

    CAMEL-15942: spring xml on camel-spring-boot may add route policy factory twice
---
 .../camel/impl/engine/AbstractCamelContext.java      | 20 ++++++++++++++++----
 .../java/org/apache/camel/impl/DefaultModel.java     |  5 ++++-
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 9983be0..b5d7364 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1953,7 +1953,10 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void addLifecycleStrategy(LifecycleStrategy lifecycleStrategy) {
-        getLifecycleStrategies().add(lifecycleStrategy);
+        // avoid adding double which can happen with spring xml on spring boot
+        if (!getLifecycleStrategies().contains(lifecycleStrategy)) {
+            getLifecycleStrategies().add(lifecycleStrategy);
+        }
     }
 
     @Override
@@ -1993,7 +1996,10 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
-        getInterceptStrategies().add(interceptStrategy);
+        // avoid adding double which can happen with spring xml on spring boot
+        if (!getInterceptStrategies().contains(interceptStrategy)) {
+            getInterceptStrategies().add(interceptStrategy);
+        }
     }
 
     @Override
@@ -2007,7 +2013,10 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void addRoutePolicyFactory(RoutePolicyFactory routePolicyFactory) {
-        getRoutePolicyFactories().add(routePolicyFactory);
+        // avoid adding double which can happen with spring xml on spring boot
+        if (!getRoutePolicyFactories().contains(routePolicyFactory)) {
+            getRoutePolicyFactories().add(routePolicyFactory);
+        }
     }
 
     @Override
@@ -2020,7 +2029,10 @@ public abstract class AbstractCamelContext extends BaseService
         if (logListeners == null) {
             logListeners = new LinkedHashSet<>();
         }
-        logListeners.add(listener);
+        // avoid adding double which can happen with spring xml on spring boot
+        if (!logListeners.contains(listener)) {
+            logListeners.add(listener);
+        }
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index ee41463..1fc5736 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -78,7 +78,10 @@ public class DefaultModel implements Model {
 
     @Override
     public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
-        this.modelLifecycleStrategies.add(modelLifecycleStrategy);
+        // avoid adding double which can happen with spring xml on spring boot
+        if (!this.modelLifecycleStrategies.contains(modelLifecycleStrategy)) {
+            this.modelLifecycleStrategies.add(modelLifecycleStrategy);
+        }
     }
 
     @Override