Author: ningjiang
Date: Wed Jan  5 07:07:57 2011
New Revision: 1055323

URL: http://svn.apache.org/viewvc?rev=1055323&view=rev
Log:
CAMEL-3494 camel-cxf endpoint supports to lookup service name and endpoint name 
from the wsdl if there is only one in the WSDL

Added:
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
   (with props)
Modified:
    
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/WSDLServiceFactoryBean.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderTest.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
    
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/PizzaEndpoints.xml

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=1055323&r1=1055322&r2=1055323&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
 Wed Jan  5 07:07:57 2011
@@ -360,9 +360,9 @@ public class CxfEndpoint extends Default
         
     }
     
-    void checkName(String value, String name) {
+    void checkName(Object value, String name) {
         if (ObjectHelper.isEmpty(value)) {
-            LOG.warn("The " + name + "is empty, cxf will try to load the first 
one in wsdl for you");
+            LOG.warn("The " + name + " of " + this.getEndpointUri() + " is 
empty, cxf will try to load the first one in wsdl for you.");
         }
     }
 
@@ -384,8 +384,8 @@ public class CxfEndpoint extends Default
         ServerFactoryBean answer = null;
         
         if (cls == null) {
-            ObjectHelper.notNull(portName, "Please provide endpoint/port 
name");
-            ObjectHelper.notNull(serviceName, "Please provide service name");
+            checkName(portName, " endpoint/port name");
+            checkName(serviceName, " service name");
             answer = new ServerFactoryBean(new WSDLServiceFactoryBean());
         } else if (CxfEndpointUtils.hasWebServiceAnnotation(cls)) {
             answer = new JaxWsServerFactoryBean();

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=1055323&r1=1055322&r2=1055323&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
 Wed Jan  5 07:07:57 2011
@@ -162,8 +162,8 @@ public class CxfSpringEndpoint extends C
                 factoryBean.setEndpointName(new QName(getEndpointNamespace(), 
getEndpointLocalName()));
             }
             
-            ObjectHelper.notNull(factoryBean.getEndpointName(), "Please 
provide endpoint/port name");
-            ObjectHelper.notNull(factoryBean.getServiceName(), "Please provide 
service name");
+            checkName(factoryBean.getEndpointName(), "endpoint/port name");
+            checkName(factoryBean.getServiceName(), "service name");
             return (Client)factoryBean.create();
         }
     }
@@ -210,8 +210,8 @@ public class CxfSpringEndpoint extends C
         }
 
         if (cls == null) {
-            ObjectHelper.notNull(answer.getEndpointName(), "Please provide 
endpoint/port name");
-            ObjectHelper.notNull(answer.getServiceName(), "Please provide 
service name");
+            checkName(answer.getEndpointName(), "endpoint/port name");
+            checkName(answer.getServiceName(), "service name");
         }
         return answer;
     }

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/WSDLServiceFactoryBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/WSDLServiceFactoryBean.java?rev=1055323&r1=1055322&r2=1055323&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/WSDLServiceFactoryBean.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/WSDLServiceFactoryBean.java
 Wed Jan  5 07:07:57 2011
@@ -16,16 +16,29 @@
  */
 package org.apache.camel.component.cxf;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cxf.service.factory.AbstractServiceConfiguration;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 import org.apache.cxf.service.invoker.Invoker;
 
 /**
  * A service factory bean class that create a service factory without 
requiring a service class
  * (SEI).
- *
+ * It will pick the first one service name and first one port/endpoint name in 
the WSDL, if 
+ * there is service name or port/endpoint name setted.
  * @version $Revision$
  */
 public class WSDLServiceFactoryBean extends ReflectionServiceFactoryBean {
+    
+    public WSDLServiceFactoryBean() {
+        // set up the service configure to help us find the service name and 
endpoint name from WSDL
+        WSDLServiceConfiguration configuration = new 
WSDLServiceConfiguration(this);
+        List<AbstractServiceConfiguration> list = new 
ArrayList<AbstractServiceConfiguration>();
+        list.add(configuration);
+        this.setServiceConfigurations(list);
+    }
 
     @Override
     protected void initializeWSDLOperations() {

Added: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java?rev=1055323&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
 (added)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
 Wed Jan  5 07:07:57 2011
@@ -0,0 +1,83 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf;
+
+import java.net.URL;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+
+import org.w3c.dom.Element;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.pizza.Pizza;
+import org.apache.camel.pizza.PizzaService;
+import org.apache.camel.pizza.types.CallerIDHeaderType;
+import org.apache.camel.pizza.types.OrderPizzaResponseType;
+import org.apache.camel.pizza.types.OrderPizzaType;
+import org.apache.camel.pizza.types.ToppingsListType;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.cxf.binding.soap.SoapHeader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class CxfPayLoadSoapHeaderSpringTest extends CxfPayLoadSoapHeaderTest {
+    protected AbstractXmlApplicationContext applicationContext;
+    
+    protected String getRouterEndpointURI() {
+        return "cxf:bean:routerEndpoint?dataFormat=PAYLOAD";
+    }
+    protected String getServiceEndpointURI() {
+        return "cxf:bean:serviceEndpoint?dataFormat=PAYLOAD";
+    }
+   
+    @Before
+    public void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();
+        assertNotNull("Should have created a valid spring context", 
applicationContext);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        super.tearDown();
+    }
+      
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        return SpringCamelContext.springCamelContext(applicationContext);
+    }
+
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/component/cxf/PizzaEndpoints.xml");
+    }
+    
+    
+
+}

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderTest.java?rev=1055323&r1=1055322&r2=1055323&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderTest.java
 Wed Jan  5 07:07:57 2011
@@ -45,20 +45,22 @@ import org.springframework.context.suppo
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class CxfPayLoadSoapHeaderTest extends CamelTestSupport {
-    protected AbstractXmlApplicationContext applicationContext; 
-       
-    protected String routerEndpointURI = 
"cxf:bean:routerEndpoint?dataFormat=PAYLOAD";
-    protected String serviceEndpointURI = 
"cxf:bean:serviceEndpoint?dataFormat=PAYLOAD";
     
     private final QName serviceName = new 
QName("http://camel.apache.org/pizza";, "PizzaService");
     
+    protected String getRouterEndpointURI() {
+        return 
"cxf:http://localhost:9013/pizza_service/services/PizzaService?wsdlURL=classpath:pizza_service.wsdl&dataFormat=PAYLOAD";;
+    }
+    protected String getServiceEndpointURI() {
+        return 
"cxf:http://localhost:9023/new_pizza_service/services/PizzaService?wsdlURL=classpath:pizza_service.wsdl&dataFormat=PAYLOAD";;
+    }     
     
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
                 // START SNIPPET: payload
-                from(routerEndpointURI).process(new Processor() {
+                from(getRouterEndpointURI()).process(new Processor() {
                     @SuppressWarnings("unchecked")
                     public void process(Exchange exchange) throws Exception {
                         CxfPayload<SoapHeader> payload = 
exchange.getIn().getBody(CxfPayload.class);
@@ -77,26 +79,12 @@ public class CxfPayLoadSoapHeaderTest ex
                     }
                     
                 })
-                .to(serviceEndpointURI);
+                .to(getServiceEndpointURI());
                 // END SNIPPET: payload
             }
         };
     }
-
-    @Before
-    public void setUp() throws Exception {
-        applicationContext = createApplicationContext();
-        super.setUp();
-        assertNotNull("Should have created a valid spring context", 
applicationContext);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        if (applicationContext != null) {
-            applicationContext.destroy();
-        }
-        super.tearDown();
-    }
+    
     
     @BeforeClass
     public static void startService() {
@@ -133,15 +121,5 @@ public class CxfPayLoadSoapHeaderTest ex
         return service.getPizzaPort();
     }
     
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
-    }
-
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new 
ClassPathXmlApplicationContext("org/apache/camel/component/cxf/PizzaEndpoints.xml");
-    }
-    
-    
 
 }

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java?rev=1055323&r1=1055322&r2=1055323&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java
 Wed Jan  5 07:07:57 2011
@@ -27,7 +27,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.component.cxf.CxfConstants;
 import org.apache.camel.component.cxf.jaxrs.testbean.Customer;
 import org.apache.camel.test.junit4.CamelSpringTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -208,8 +207,7 @@ public class CxfRsProducerTest extends C
         assertEquals("The response value is wrong", "q1=new&q2=world", 
response);
     }
 
-    @Test
-    @Ignore("TODO: Fixme")
+    @Test    
     public void testRestServerDirectlyGetCustomer() {
         // we cannot convert directly to Customer as we need camel-jaxb
         String response = 
template.requestBodyAndHeader("cxfrs:http://localhost:9002/customerservice/customers/123";,

Modified: 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/PizzaEndpoints.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/PizzaEndpoints.xml?rev=1055323&r1=1055322&r2=1055323&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/PizzaEndpoints.xml
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/PizzaEndpoints.xml
 Wed Jan  5 07:07:57 2011
@@ -30,14 +30,10 @@
    <!-- Added the import for testing the CAMEL-329 -->
 
    <cxf:cxfEndpoint id="routerEndpoint" 
address="http://localhost:9013/pizza_service/services/PizzaService";
-               serviceClass="org.apache.camel.pizza.Pizza"/>
+               wsdlURL="pizza_service.wsdl"/>
 
    <cxf:cxfEndpoint id="serviceEndpoint" 
address="http://localhost:9023/new_pizza_service/services/PizzaService";
-               wsdlURL="pizza_service.wsdl"
-               serviceClass="org.apache.camel.pizza.Pizza"
-               endpointName="s:PizzaPort"
-               serviceName="s:PizzaService"
-       xmlns:s="http://camel.apache.org/pizza"; />
+               wsdlURL="pizza_service.wsdl"/>
   
 
 </beans>
\ No newline at end of file


Reply via email to