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 {


Reply via email to