Repository: camel Updated Branches: refs/heads/camel-2.17.x 046dc3fba -> 6efd0461d refs/heads/master 1a4e34960 -> d943910b2
[CAMEL-9825] Exclude CDI generated proxies from context tracker Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7cd6cb4d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7cd6cb4d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7cd6cb4d Branch: refs/heads/camel-2.17.x Commit: 7cd6cb4d1986f3d94c81081d0e9e2116175ba085 Parents: 046dc3f Author: Thomas Diesler <thomas.dies...@jboss.com> Authored: Wed Apr 6 12:31:35 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Apr 7 10:26:35 2016 +0200 ---------------------------------------------------------------------- .../camel/impl/CamelContextTrackerRegistry.java | 4 ++- .../apache/camel/spi/CamelContextTracker.java | 31 +++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/7cd6cb4d/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java index bd70e56..33af5a3 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java @@ -53,7 +53,9 @@ public final class CamelContextTrackerRegistry { synchronized void contextCreated(CamelContext camelContext) { for (CamelContextTracker tracker : trackers) { try { - tracker.contextCreated(camelContext); + if (tracker.accept(camelContext)) { + tracker.contextCreated(camelContext); + } } catch (Exception e) { LOG.warn("Error calling CamelContext tracker. This exception is ignored.", e); } http://git-wip-us.apache.org/repos/asf/camel/blob/7cd6cb4d/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java b/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java index a94abce..0ca540c 100644 --- a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java +++ b/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java @@ -16,13 +16,42 @@ */ package org.apache.camel.spi; +import java.io.Closeable; + import org.apache.camel.CamelContext; import org.apache.camel.impl.CamelContextTrackerRegistry; /** * A camel context creation tracker. */ -public class CamelContextTracker { +public class CamelContextTracker implements Closeable { + + public interface Filter { + + boolean accept(CamelContext camelContext); + + } + + private final Filter filter; + + public CamelContextTracker() { + filter = new Filter() { + public boolean accept(CamelContext camelContext) { + return camelContext.getClass().getName().contains("Proxy") == false; + } + }; + } + + public CamelContextTracker(Filter filter) { + this.filter = filter; + } + + /** + * Called to determine whether this tracker should accept the given context. + */ + public boolean accept(CamelContext camelContext) { + return filter != null ? filter.accept(camelContext) : true; + } /** * Called when a context is created.