Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x fa3ec4d99 -> 1b3b64a75
  refs/heads/master 017dffc37 -> 935f36603


CAMEL-9200: Context component conflates endpoints with the same local id from 
different CamelContexts. Thanks to Aaron Birkland for the patch.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3e903b35
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3e903b35
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3e903b35

Branch: refs/heads/master
Commit: 3e903b355ccd2a743f3bc79ac31ff2c896b0a46a
Parents: 017dffc
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu Apr 28 16:45:00 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu Apr 28 16:45:16 2016 +0200

----------------------------------------------------------------------
 .../org/apache/camel/impl/DefaultEndpoint.java  |  5 +++-
 .../component/context/ContextEndpoint.java      | 24 ++++++++++++++++++++
 .../context/LocalContextComponent.java          |  6 +++--
 .../context/SpringDslContextComponentTest.java  |  2 +-
 4 files changed, 33 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3e903b35/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
index ff8253c..eded370 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
@@ -147,7 +147,10 @@ public abstract class DefaultEndpoint extends 
ServiceSupport implements Endpoint
     public boolean equals(Object object) {
         if (object instanceof DefaultEndpoint) {
             DefaultEndpoint that = (DefaultEndpoint)object;
-            return ObjectHelper.equal(this.getEndpointUri(), 
that.getEndpointUri());
+            // must also match the same CamelContext in case we compare 
endpoints from different contexts
+            String thisContextName = this.getCamelContext() != null ? 
this.getCamelContext().getName() : null;
+            String thatContextName = that.getCamelContext() != null ? 
that.getCamelContext().getName() : null;
+            return ObjectHelper.equal(this.getEndpointUri(), 
that.getEndpointUri()) && ObjectHelper.equal(thisContextName, thatContextName);
         }
         return false;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/3e903b35/components/camel-context/src/main/java/org/apache/camel/component/context/ContextEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-context/src/main/java/org/apache/camel/component/context/ContextEndpoint.java
 
b/components/camel-context/src/main/java/org/apache/camel/component/context/ContextEndpoint.java
index 36ad929..ff88de6 100644
--- 
a/components/camel-context/src/main/java/org/apache/camel/component/context/ContextEndpoint.java
+++ 
b/components/camel-context/src/main/java/org/apache/camel/component/context/ContextEndpoint.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.component.context;
 
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.DelegateEndpoint;
@@ -96,4 +99,25 @@ public class ContextEndpoint extends DefaultEndpoint 
implements DelegateEndpoint
     public boolean isSingleton() {
         return delegate.isSingleton();
     }
+
+    @Override
+    public void start() throws Exception {
+        // noop by purpose
+    }
+
+    @Override
+    public void stop() throws Exception {
+        // noop by purpose
+    }
+
+    @Override
+    public void configureProperties(Map<String, Object> options) {
+        // noop by purpose
+    }
+
+    @Override
+    public void setCamelContext(CamelContext context) {
+        // noop by purpose
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/3e903b35/components/camel-context/src/main/java/org/apache/camel/component/context/LocalContextComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-context/src/main/java/org/apache/camel/component/context/LocalContextComponent.java
 
b/components/camel-context/src/main/java/org/apache/camel/component/context/LocalContextComponent.java
index d341b4b..9ae64a7 100644
--- 
a/components/camel-context/src/main/java/org/apache/camel/component/context/LocalContextComponent.java
+++ 
b/components/camel-context/src/main/java/org/apache/camel/component/context/LocalContextComponent.java
@@ -78,7 +78,8 @@ public class LocalContextComponent extends DefaultComponent {
         Endpoint endpoint = map.get(remaining);
         if (endpoint != null) {
             logUsingEndpoint(uri, endpoint);
-            return endpoint;
+            return new ContextEndpoint(uri, this, endpoint);
+            //return new ExportedEndpoint(endpoint);
         }
 
         // look to see if there is an endpoint of name 'remaining' using one 
of the local endpoints within
@@ -90,7 +91,8 @@ public class LocalContextComponent extends DefaultComponent {
                 endpoint = map.get(newUri);
                 if (endpoint != null) {
                     logUsingEndpoint(uri, endpoint);
-                    return endpoint;
+                    return new ContextEndpoint(uri, this, endpoint);
+                    //return new ExportedEndpoint(endpoint);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/3e903b35/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
 
b/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
index 65742d1..d986d5d 100644
--- 
a/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
+++ 
b/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
@@ -34,7 +34,7 @@ import 
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
 @ContextConfiguration
 public class SpringDslContextComponentTest extends 
AbstractJUnit4SpringContextTests {
 
-    @EndpointInject(uri = "tester:results", context = "tester")
+    @EndpointInject(uri = "mock:results", context = "tester")
     private MockEndpoint resultEndpoint;
 
     @Produce(uri = "tester:start", context = "tester")

Reply via email to