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/1b3b64a7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1b3b64a7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1b3b64a7

Branch: refs/heads/camel-2.16.x
Commit: 1b3b64a750a913562b9dc89f0d7dc32f6c4020e2
Parents: fa3ec4d
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 17:19:48 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/1b3b64a7/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/1b3b64a7/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 49dfddd..4704b1d 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;
@@ -87,4 +90,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/1b3b64a7/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/1b3b64a7/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