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 -->               
 


Reply via email to