Repository: camel Updated Branches: refs/heads/camel-2.17.x c4ef2572c -> 552d78acc refs/heads/master 9863e83d7 -> 39a82b181
CAMEL-9981: camel-test-spring may register listener twice. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/39a82b18 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/39a82b18 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/39a82b18 Branch: refs/heads/master Commit: 39a82b181dc75ba9bb21ccd32da7a22e3eb34734 Parents: 9863e83 Author: Claus Ibsen <[email protected]> Authored: Sun May 22 09:22:54 2016 +0200 Committer: Claus Ibsen <[email protected]> Committed: Sun May 22 09:22:54 2016 +0200 ---------------------------------------------------------------------- .../test/spring/CamelSpringBootRunner.java | 31 +++++++++++++++++--- .../camel/test/spring/CamelSpringRunner.java | 22 ++++++++++++-- 2 files changed, 46 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/39a82b18/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootRunner.java ---------------------------------------------------------------------- diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootRunner.java index 34e3a05..e8f8620 100644 --- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootRunner.java +++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootRunner.java @@ -16,8 +16,12 @@ */ package org.apache.camel.test.spring; +import java.util.List; + import org.junit.runners.model.InitializationError; +import org.springframework.core.OrderComparator; import org.springframework.test.context.TestContextManager; +import org.springframework.test.context.TestExecutionListener; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** @@ -56,10 +60,29 @@ public class CamelSpringBootRunner extends SpringJUnit4ClassRunner { System.setProperty("skipStartingCamelContext", "true"); // inject Camel first, and then disable jmx and add the stop-watch - registerTestExecutionListeners(new CamelSpringTestContextLoaderTestExecutionListener()); - registerTestExecutionListeners(new DisableJmxTestExecutionListener()); - registerTestExecutionListeners(new CamelSpringBootExecutionListener()); - registerTestExecutionListeners(new StopWatchTestExecutionListener()); + // (ensure to get the current list as we need to re-order that list so Camel comes first) + List<TestExecutionListener> list = getTestExecutionListeners(); + addIfMissingType(list, new CamelSpringTestContextLoaderTestExecutionListener()); + addIfMissingType(list, new DisableJmxTestExecutionListener()); + addIfMissingType(list, new CamelSpringBootExecutionListener()); + addIfMissingType(list, new StopWatchTestExecutionListener()); + OrderComparator.sort(list); + registerTestExecutionListeners(list); + } + + private void addIfMissingType(List<TestExecutionListener> list, TestExecutionListener listener) { + String type = listener.getClass().getName(); + boolean found = false; + for (TestExecutionListener current : list) { + if (type.equals(current.getClass().getName())) { + found = true; + break; + } + } + + if (!found) { + list.add(listener); + } } } http://git-wip-us.apache.org/repos/asf/camel/blob/39a82b18/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringRunner.java ---------------------------------------------------------------------- diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringRunner.java index b689337..4cd9935 100644 --- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringRunner.java +++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringRunner.java @@ -57,14 +57,30 @@ public class CamelSpringRunner extends SpringJUnit4ClassRunner { super(testClass); // inject Camel first, and then disable jmx and add the stop-watch + // (ensure to get the current list as we need to re-order that list so Camel comes first) List<TestExecutionListener> list = getTestExecutionListeners(); - list.add(new CamelSpringTestContextLoaderTestExecutionListener()); - list.add(new DisableJmxTestExecutionListener()); - list.add(new StopWatchTestExecutionListener()); + addIfMissingType(list, new CamelSpringTestContextLoaderTestExecutionListener()); + addIfMissingType(list, new DisableJmxTestExecutionListener()); + addIfMissingType(list, new StopWatchTestExecutionListener()); OrderComparator.sort(list); registerTestExecutionListeners(list); } + private void addIfMissingType(List<TestExecutionListener> list, TestExecutionListener listener) { + String type = listener.getClass().getName(); + boolean found = false; + for (TestExecutionListener current : list) { + if (type.equals(current.getClass().getName())) { + found = true; + break; + } + } + + if (!found) { + list.add(listener); + } + } + } }
