Repository: camel Updated Branches: refs/heads/camel-2.17.x 2de454fba -> ccc03cdc8
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/ccc03cdc Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ccc03cdc Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ccc03cdc Branch: refs/heads/camel-2.17.x Commit: ccc03cdc8af3ee69a1174dd0474a668b4a571858 Parents: 2de454f 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:20:13 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/ccc03cdc/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/ccc03cdc/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/ccc03cdc/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/ccc03cdc/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")