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/10/08 06:47:25 UTC

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

Author: ningjiang
Date: Fri Oct  8 04:47:24 2010
New Revision: 1005710

URL: http://svn.apache.org/viewvc?rev=1005710&view=rev
Log:
CAMEL-3205 The CxfEndpointConvertor should support to configure CxfEndpoint from the properties map. Also Added some tests for CAMEL-3190.

Modified:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterPayLoadRouterTest.java
    camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterConverterEndpointsRouterContext.xml
    camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointWithFeatureBeans.xml
    camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointsRouterContext.xml

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java Fri Oct  8 04:47:24 2010
@@ -20,7 +20,9 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.ws.rs.core.Response;
 import javax.xml.soap.SOAPMessage;
@@ -30,14 +32,17 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.FallbackConverter;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.component.cxf.CxfEndpoint;
 import org.apache.camel.component.cxf.CxfSpringEndpoint;
 import org.apache.camel.component.cxf.DataFormat;
 import org.apache.camel.component.cxf.spring.CxfEndpointBeanDefinitionParser.CxfSpringEndpointBean;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.util.EndpointHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageContentsList;
 
 /**
@@ -113,7 +118,15 @@ public final class CxfConverter {
         // CamelContext 
         SpringCamelContext context = SpringCamelContext.springCamelContext(endpointBean.getApplicationContext());
         // The beanId will be set from endpointBean's property        
-        Endpoint answer = new CxfSpringEndpoint(context, endpointBean);        
+        CxfEndpoint answer = new CxfSpringEndpoint(context, endpointBean);
+        // check the properties map 
+        if (endpointBean.getProperties() != null) {
+            Map<String, Object> copy = new HashMap<String, Object>();
+            copy.putAll(endpointBean.getProperties());
+            EndpointHelper.setReferenceProperties(context, answer, copy);
+            EndpointHelper.setProperties(context, answer, copy);
+            answer.setMtomEnabled(Boolean.valueOf((String)copy.get(Message.MTOM_ENABLED)));
+        }
         return answer;
     }
 

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java Fri Oct  8 04:47:24 2010
@@ -61,7 +61,6 @@ public class CxfEndpointBeanDefinitionPa
                 map.putAll(props);
             }
             bean.addPropertyValue("properties", map);
-            
         } else if ("binding".equals(name)) {
             setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
         } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFGreeterRouterTest.java Fri Oct  8 04:47:24 2010
@@ -120,6 +120,12 @@ public class CXFGreeterRouterTest extend
         }
     }
     
+    @Test
+    public void testPublishEndpointUrl() throws Exception {
+        String response = template.requestBody("http://localhost:9003/CamelContext/RouterPort?wsdl", null, String.class);
+        assertTrue("Can't find the right service location.", response.indexOf("http://www.simple.com/services/test") > 0);
+    }
+    
     @Override
     protected CamelContext createCamelContext() throws Exception {
         return SpringCamelContext.springCamelContext(applicationContext);

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java Fri Oct  8 04:47:24 2010
@@ -28,7 +28,8 @@ public class CxfGreeterMessageRouterTest
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("cxf:bean:routerEndpoint?dataFormat=Message").to("cxf:bean:serviceEndpoint?dataFormat=Message");
+                from("cxf:bean:routerEndpoint?dataFormat=Message&publishedEndpointUrl=http://www.simple.com/services/test")
+                    .to("cxf:bean:serviceEndpoint?dataFormat=Message");
             }
         };
     }

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterPayLoadRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterPayLoadRouterTest.java?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterPayLoadRouterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterPayLoadRouterTest.java Fri Oct  8 04:47:24 2010
@@ -28,7 +28,8 @@ public class CxfGreeterPayLoadRouterTest
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("cxf:bean:routerEndpoint?dataFormat=PAYLOAD").to("cxf:bean:serviceEndpoint?dataFormat=PAYLOAD");
+                from("cxf:bean:routerEndpoint?dataFormat=PAYLOAD&publishedEndpointUrl=http://www.simple.com/services/test")
+                    .to("cxf:bean:serviceEndpoint?dataFormat=PAYLOAD");
             }
         };
     }

Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterConverterEndpointsRouterContext.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterConverterEndpointsRouterContext.xml?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterConverterEndpointsRouterContext.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterConverterEndpointsRouterContext.xml Fri Oct  8 04:47:24 2010
@@ -34,7 +34,12 @@
     		serviceClass="org.apache.hello_world_soap_http.Greeter" 
     		endpointName="s:SoapPort"
     		serviceName="s:SOAPService"
-    	    xmlns:s="http://apache.org/hello_world_soap_http"/>
+    	    xmlns:s="http://apache.org/hello_world_soap_http">
+    	    <cxf:properties>
+    	       <entry key="publishedEndpointUrl" value="http://www.simple.com/services/test" />
+    	    </cxf:properties>
+    	    
+   </cxf:cxfEndpoint>
 
    <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
     		wsdlURL="testutils/hello_world.wsdl"

Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointWithFeatureBeans.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointWithFeatureBeans.xml?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointWithFeatureBeans.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointWithFeatureBeans.xml Fri Oct  8 04:47:24 2010
@@ -46,7 +46,7 @@
 
    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
     <route errorHandlerRef="noErrorHandler">
-      <from uri="cxf:bean:routerEndpoint?dataFormat=PAYLOAD" />
+      <from uri="cxf:bean:routerEndpoint?dataFormat=PAYLOAD&amp;publishedEndpointUrl=http://www.simple.com/services/test" />
       <to uri="cxf:bean:serviceEndpoint?dataFormat=PAYLOAD" />
     </route>
    </camelContext>

Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointsRouterContext.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointsRouterContext.xml?rev=1005710&r1=1005709&r2=1005710&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointsRouterContext.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointsRouterContext.xml Fri Oct  8 04:47:24 2010
@@ -36,6 +36,10 @@
             <!-- This interceptor will force the CXF server send the XML start document to client -->
             <bean class="org.apache.camel.component.cxf.WriteXmlDeclarationInterceptor"/>
         </cxf:outInterceptors>
+        <cxf:properties>
+            <!-- Set the publishedEndpointUrl which could override the service address from generated WSDL as you want -->
+    	    <entry key="publishedEndpointUrl" value="http://www.simple.com/services/test" />
+    	</cxf:properties>
    </cxf:cxfEndpoint>
    <!-- END SNIPPET: example -->