[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.

Reply via email to