You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2011/10/20 08:16:05 UTC
svn commit: r1186625 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/
test/java/org/apache/camel/component/cxf/spring/
Author: ningjiang
Date: Thu Oct 20 06:16:04 2011
New Revision: 1186625
URL: http://svn.apache.org/viewvc?rev=1186625&view=rev
Log:
CAMEL-4561 CxfComponent should create a new CxfEndpoint instance if the instance is lookup from configuration registry
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java?rev=1186625&r1=1186624&r2=1186625&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java Thu Oct 20 06:16:04 2011
@@ -71,7 +71,12 @@ public class CxfComponent extends Header
// need to set the CamelContext value
if (result.getCamelContext() == null) {
result.setCamelContext(getCamelContext());
+ }
+ if (!result.getCamelContext().equals(getCamelContext()) || parameters.size() > 0) {
+ // need to clone a new endpoint to use
+ result = result.copy();
}
+
} else {
// endpoint URI does not specify a bean
result = new CxfEndpoint(remaining, this);
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=1186625&r1=1186624&r2=1186625&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Thu Oct 20 06:16:04 2011
@@ -39,6 +39,7 @@ import org.apache.camel.CamelException;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.Service;
import org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy;
import org.apache.camel.component.cxf.common.message.CxfConstants;
@@ -94,7 +95,7 @@ import org.slf4j.LoggerFactory;
* {@link CxfBinding}, and {@link HeaderFilterStrategy}. The default DataFormat
* mode is {@link DataFormat#POJO}.
*/
-public class CxfEndpoint extends DefaultEndpoint implements HeaderFilterStrategyAware, Service {
+public class CxfEndpoint extends DefaultEndpoint implements HeaderFilterStrategyAware, Service, Cloneable {
private static final Logger LOG = LoggerFactory.getLogger(CxfEndpoint.class);
@@ -164,6 +165,14 @@ public class CxfEndpoint extends Default
public CxfEndpoint() {
super();
}
+
+ public CxfEndpoint copy() {
+ try {
+ return (CxfEndpoint)this.clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeCamelException(e);
+ }
+ }
// This method is for CxfComponent setting the EndpointUri
protected void updateEndpointUri(String endpointUri) {
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java?rev=1186625&r1=1186624&r2=1186625&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java Thu Oct 20 06:16:04 2011
@@ -59,7 +59,5 @@ public class CxfEndpointBeanTest extends
assertEquals("We should get a right soap version", "1.2", String.valueOf(configuration.getVersion().getVersion()));
}
-
-
-
+
}
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java?rev=1186625&r1=1186624&r2=1186625&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java Thu Oct 20 06:16:04 2011
@@ -48,6 +48,19 @@ public class CxfEndpointBeansRouterTest
"org.apache.camel.component.cxf.HelloService",
routerEndpoint.getServiceClass().getName());
}
+
+ @Test
+ public void testCreateCxfEndpointFromURI() {
+ CamelContext camelContext = (CamelContext) ctx.getBean("camel");
+ CxfEndpoint endpoint1 = (CxfEndpoint)
+ camelContext.getEndpoint("cxf:bean:routerEndpoint?address=http://localhost:9000/test1");
+ CxfEndpoint endpoint2 = (CxfEndpoint)
+ camelContext.getEndpoint("cxf:bean:routerEndpoint?address=http://localhost:8000/test2");
+ assertEquals("Get a wrong endpoint address.", "http://localhost:9000/test1", endpoint1.getAddress());
+ assertEquals("Get a wrong endpoint address.", "http://localhost:8000/test2", endpoint2.getAddress());
+ assertEquals("Get a wrong endpoint key.", "cxf://bean:routerEndpoint?address=http://localhost:9000/test1", endpoint1.getEndpointKey());
+ assertEquals("Get a wrong endpoint key.", "cxf://bean:routerEndpoint?address=http://localhost:8000/test2", endpoint2.getEndpointKey());
+ }
@Test
public void testCxfBusConfiguration() throws Exception {