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 2010/07/27 11:53:46 UTC

svn commit: r979626 - in /camel/trunk/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/ main/java/org/apache/camel/component/cxf/spring/ test/java/org/apache/camel/component/cxf/ test/java/org/apache/camel/component/cxf/spring/

Author: ningjiang
Date: Tue Jul 27 09:53:46 2010
New Revision: 979626

URL: http://svn.apache.org/viewvc?rev=979626&view=rev
Log:
CAMEL-2997 Made camel-cxf endpoint's URI to be unique

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/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMultipleConsumersSupportTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanBusSettingTest.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=979626&r1=979625&r2=979626&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 Tue Jul 27 09:53:46 2010
@@ -80,5 +80,11 @@ public class CxfComponent extends Header
         setEndpointHeaderFilterStrategy(result);
         return result;
     }
+    
+    @Override
+    protected void afterConfiguration(String uri, String remaining, Endpoint endpoint, Map<String, Object> parameters) throws Exception {
+        CxfEndpoint cxfEndpoint = (CxfEndpoint) endpoint;
+        cxfEndpoint.updateEndpointUri(uri);
+    }
         
 }

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=979626&r1=979625&r2=979626&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 Tue Jul 27 09:53:46 2010
@@ -94,13 +94,21 @@ public class CxfEndpoint extends Default
     private AtomicBoolean getBusHasBeenCalled = new AtomicBoolean(false);
     private boolean isSetDefaultBus;
     private boolean loggingFeatureEnabled;
+    private String address;
 
     public CxfEndpoint(String remaining, CxfComponent cxfComponent) {
         super(remaining, cxfComponent);
+        setAddress(remaining);
     }
     
     public CxfEndpoint(String remaining, CamelContext context) {
         super(remaining, context);
+        setAddress(remaining);
+    }
+    
+    // This path is for CxfComponent setting the EndpointUri
+    void updateEndpointUri(String endpointUri) {
+        super.setEndpointUri(endpointUri);
     }
 
     public Producer createProducer() throws Exception {
@@ -121,7 +129,7 @@ public class CxfEndpoint extends Default
     protected void setupServerFactoryBean(ServerFactoryBean sfb, Class<?> cls) {
         
         // address
-        sfb.setAddress(getEndpointUri());
+        sfb.setAddress(getAddress());
         
         // service class
         sfb.setServiceClass(cls); 
@@ -235,7 +243,7 @@ public class CxfEndpoint extends Default
         factoryBean.setServiceClass(cls);
         
         // address
-        factoryBean.setAddress(getEndpointUri());
+        factoryBean.setAddress(getAddress());
 
         // wsdl url
         if (getWsdlURL() != null) {
@@ -275,7 +283,7 @@ public class CxfEndpoint extends Default
 
     protected void setupClientFactoryBean(ClientFactoryBean factoryBean) {       
         // address
-        factoryBean.setAddress(getEndpointUri());
+        factoryBean.setAddress(getAddress());
 
         // wsdl url
         if (getWsdlURL() != null) {
@@ -542,6 +550,14 @@ public class CxfEndpoint extends Default
         // noop
     }
 
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
     /**
      * We need to override the {@link ClientImpl#setParameters} method
      * to insert parameters into CXF Message for {@link DataFormat#PAYLOAD} mode.

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java Tue Jul 27 09:53:46 2010
@@ -60,8 +60,8 @@ public class CxfSpringEndpoint extends C
         super(bean.getAddress(), component);
         init(bean);
     }
-    
-
+        
+    // override the 
     private void init(CxfEndpointBean bean) throws Exception {
         this.bean = bean;        
         // create configurer
@@ -234,7 +234,7 @@ public class CxfSpringEndpoint extends C
     }
     
     // this property will be set by spring
-    public void setBeanId(String id) {        
+    public void setBeanId(String id) {       
         this.beanId = id;
     }
     

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java Tue Jul 27 09:53:46 2010
@@ -22,12 +22,15 @@ import org.apache.cxf.BusFactory;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 
+import org.springframework.beans.factory.BeanNameAware;
 import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.NamedBean;
 
 public class CxfEndpointBean extends AbstractWSDLBasedEndpointFactory
-    implements DisposableBean {
+    implements DisposableBean, BeanNameAware, NamedBean {
     
     private List handlers;
+    private String beanName;
 
     public CxfEndpointBean() {
         this(new ReflectionServiceFactoryBean());
@@ -51,4 +54,12 @@ public class CxfEndpointBean extends Abs
         BusFactory.setThreadDefaultBus(null);
         
     }
+
+    public void setBeanName(String name) {
+        beanName = name;
+    }
+
+    public String getBeanName() {
+        return beanName;
+    }
 }

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerStartTwiceTest.java Tue Jul 27 09:53:46 2010
@@ -48,7 +48,8 @@ public class CxfConsumerStartTwiceTest e
             context.start();
             fail("Expect to catch an exception here");
         } catch (Exception ex) {
-            assertTrue(ex.getMessage().endsWith("Multiple consumers for the same endpoint is not allowed: Endpoint[http://localhost:7070/test]"));
+            assertTrue(ex.getMessage().endsWith(
+                "Multiple consumers for the same endpoint is not allowed: Endpoint[cxf:http://localhost:7070/test?serviceClass=org.apache.camel.component.cxf.HelloService]"));
         }
                 
         context.stop();

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMultipleConsumersSupportTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMultipleConsumersSupportTest.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMultipleConsumersSupportTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMultipleConsumersSupportTest.java Tue Jul 27 09:53:46 2010
@@ -50,7 +50,8 @@ public class CxfMultipleConsumersSupport
             context.start();
             fail("Should have thrown an exception");
         } catch (FailedToStartRouteException e) {
-            assertTrue(e.getMessage().endsWith("Multiple consumers for the same endpoint is not allowed: Endpoint[http://localhost:28080/test]"));
+            assertTrue(e.getMessage().endsWith(
+                "Multiple consumers for the same endpoint is not allowed: Endpoint[cxf://http://localhost:28080/test?serviceClass=org.apache.camel.component.cxf.HelloService]"));
         }
     }
 

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java Tue Jul 27 09:53:46 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.cxf;
 
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -25,6 +26,7 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.camel.util.URISupport;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.bus.CXFBusFactory;
@@ -66,6 +68,16 @@ public class CxfProducerRouterTest exten
             }
         };
     }
+    
+    @Test
+    public void testCxfEndpointUris() throws URISyntaxException {
+        CxfEndpoint endpoint = context.getEndpoint(getSimpleEndpointUri(), CxfEndpoint.class);
+        assertEquals("Get a wrong endpoint uri", getSimpleEndpointUri(), endpoint.getEndpointUri());
+        
+        endpoint = context.getEndpoint(getSimpleEndpointUri() + "&dataFormat=MESSAGE", CxfEndpoint.class);
+        assertEquals("Get a wrong endpoint uri", URISupport.normalizeUri(getSimpleEndpointUri() + "&dataFormat=MESSAGE"), endpoint.getEndpointUri());
+
+    }
 
     @Test
     public void testInvokingSimpleServerWithParams() throws Exception {

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanBusSettingTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanBusSettingTest.java?rev=979626&r1=979625&r2=979626&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanBusSettingTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanBusSettingTest.java Tue Jul 27 09:53:46 2010
@@ -33,12 +33,14 @@ public class CxfEndpointBeanBusSettingTe
         CamelContext camelContext = (CamelContext) ctx.getBean("camel");
         
         CxfEndpoint endpoint = (CxfEndpoint)camelContext.getEndpoint("cxf:bean:routerEndpoint");
+        assertEquals("Get a wrong endpoint uri", "cxf://bean:routerEndpoint", endpoint.getEndpointUri());       
         Bus cxf1 = endpoint.getBus();
         
         assertTrue(cxf1.getOutInterceptors().size() >= 1);
         assertTrue(cxf1.getInInterceptors().size() == 0);
         
         endpoint = (CxfEndpoint)camelContext.getEndpoint("cxf:bean:serviceEndpoint");
+        assertEquals("Get a wrong endpoint uri", "cxf://bean:serviceEndpoint", endpoint.getEndpointUri());
         Bus cxf2 = endpoint.getBus();
         assertTrue(cxf2.getInInterceptors().size() >= 1);
         assertTrue(cxf2.getOutInterceptors().size() == 0);