[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/4cf2aa47 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4cf2aa47 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4cf2aa47 Branch: refs/heads/master Commit: 4cf2aa47fe6b04a27f2d21719102580a45d756b3 Parents: 1a4e349 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:55 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/4cf2aa47/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/4cf2aa47/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.