You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2007/06/01 10:03:46 UTC

svn commit: r543420 - in /incubator/cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/ rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ tools/wsdlto/test/src/te...

Author: mmao
Date: Fri Jun  1 01:03:42 2007
New Revision: 543420

URL: http://svn.apache.org/viewvc?view=rev&rev=543420
Log:
CXF-631 Regression in simple front end WSDL auto-generation
* Move soap binding/operation creation from SoapTransportFactory to SoapBindingFactory
  SoapTransport only need to take care of soap address.


Added:
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/Hello.java
Modified:
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapTransportFactory.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/SoapAddressPlugin.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsServerFactoryBeanTest.java
    incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
    incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/mapping-doc-literal.wsdl

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java Fri Jun  1 01:03:42 2007
@@ -23,8 +23,11 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-
+import javax.wsdl.BindingInput;
+import javax.wsdl.BindingOutput;
+import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.ExtensionRegistry;
 import javax.wsdl.extensions.mime.MIMEContent;
 import javax.wsdl.extensions.mime.MIMEMultipartRelated;
 import javax.wsdl.extensions.mime.MIMEPart;
@@ -60,6 +63,7 @@
 import org.apache.cxf.interceptor.URIMappingInterceptor;
 import org.apache.cxf.interceptor.WrappedOutInterceptor;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
@@ -67,7 +71,9 @@
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.extensions.soap.SoapBinding;
 import org.apache.cxf.tools.common.extensions.soap.SoapBody;
+import org.apache.cxf.tools.common.extensions.soap.SoapFault;
 import org.apache.cxf.tools.common.extensions.soap.SoapHeader;
 import org.apache.cxf.tools.common.extensions.soap.SoapOperation;
 import org.apache.cxf.tools.util.SOAPBindingUtil;
@@ -75,6 +81,7 @@
 import org.apache.cxf.transport.Destination;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.MultipleEndpointObserver;
+import org.apache.cxf.wsdl.WSDLManager;
 
 
 public class SoapBindingFactory extends AbstractBindingFactory {
@@ -149,9 +156,114 @@
                 setupHeaders(bop, bOutput, unwrappedMsg, output, config);
             }
         }
+
+        try {
+            createSoapBinding(info);
+        } catch (WSDLException e) {
+            e.printStackTrace();
+        }
         
         return info;
     }
+
+
+    private void createSoapBinding(final SoapBindingInfo bi) throws WSDLException {
+        boolean isSoap12 = bi.getSoapVersion() instanceof Soap12;
+        ExtensionRegistry extensionRegistry = getBus().getExtension(WSDLManager.class)
+            .getExtenstionRegistry();
+        
+        SoapBinding soapBinding = SOAPBindingUtil.createSoapBinding(extensionRegistry, isSoap12);
+        soapBinding.setStyle(bi.getStyle());
+        soapBinding.setTransportURI(bi.getTransportURI());
+        bi.addExtensor(soapBinding);
+
+        for (BindingOperationInfo b : bi.getOperations()) {
+            for (BindingFaultInfo faultInfo : b.getFaults()) {
+                SoapFault soapFault = SOAPBindingUtil.createSoapFault(extensionRegistry, isSoap12);
+                soapFault.setUse("literal");
+                soapFault.setName(faultInfo.getFaultInfo().getFaultName().getLocalPart());
+                faultInfo.addExtensor(soapFault);
+            }
+            SoapOperationInfo soi = b.getExtensor(SoapOperationInfo.class);
+                
+            SoapOperation soapOperation = SOAPBindingUtil.createSoapOperation(extensionRegistry,
+                                                                              isSoap12);
+            soapOperation.setSoapActionURI(soi.getAction());
+            soapOperation.setStyle(soi.getStyle());
+            boolean isRpc = "rpc".equals(soapOperation.getStyle());
+
+            b.addExtensor(soapOperation);
+
+            if (b.getInput() != null) {
+                List<String> bodyParts = null;
+                SoapHeaderInfo headerInfo = b.getInput().getExtensor(SoapHeaderInfo.class);
+                if (headerInfo != null) {
+                    bodyParts = new ArrayList<String>();
+                    for (MessagePartInfo part : b.getInput().getMessageParts()) {
+                        bodyParts.add(part.getName().getLocalPart());
+                    }
+                        
+                    SoapHeader soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
+                                                                             BindingInput.class,
+                                                                             isSoap12);
+                    soapHeader.setMessage(b.getInput().getMessageInfo().getName());
+                    soapHeader.setPart(headerInfo.getPart().getName().getLocalPart());
+                    soapHeader.setUse("literal");
+                    bodyParts.remove(headerInfo.getPart().getName().getLocalPart());
+                    b.getInput().addExtensor(soapHeader);
+
+                } 
+                SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry,
+                                                               BindingInput.class,
+                                                               isSoap12);
+                body.setUse("literal");
+                if (isRpc) {
+                    body.setNamespaceURI(b.getName().getNamespaceURI());
+                }
+
+                if (bodyParts != null) {
+                    body.setParts(bodyParts);
+                }
+
+                b.getInput().addExtensor(body);
+            }
+
+            if (b.getOutput() != null) {
+                List<String> bodyParts = null;
+                SoapHeaderInfo headerInfo = b.getOutput().getExtensor(SoapHeaderInfo.class);
+                if (headerInfo != null) {
+                    bodyParts = new ArrayList<String>();
+                    for (MessagePartInfo part : b.getOutput().getMessageParts()) {
+                        bodyParts.add(part.getName().getLocalPart());
+                    }
+                    SoapHeader soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
+                                                                             BindingOutput.class,
+                                                                             isSoap12);
+                    soapHeader.setMessage(b.getOutput().getMessageInfo().getName());
+                    soapHeader.setPart(headerInfo.getPart().getName().getLocalPart());
+                    soapHeader.setUse("literal");
+                    bodyParts.remove(headerInfo.getPart().getName().getLocalPart());
+                    b.getOutput().addExtensor(soapHeader);
+
+                }
+                SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry,
+                                                               BindingOutput.class,
+                                                               isSoap12);
+                body.setUse("literal");
+                if (isRpc) {
+                    body.setNamespaceURI(b.getName().getNamespaceURI());
+                }
+
+                if (bodyParts != null) {
+                    body.setParts(bodyParts);
+                }
+                    
+                b.getOutput().addExtensor(body);
+            }
+        }
+    }
+    
+    
     private void setupHeaders(BindingOperationInfo op, 
                               BindingMessageInfo bMsg, 
                               BindingMessageInfo unwrappedBMsg, 
@@ -179,12 +291,12 @@
         String parameterStyle = SoapConstants.PARAMETER_STYLE_WRAPPED;
         String bindingStyle = SoapConstants.BINDING_STYLE_DOC;
 
-        SoapBinding sb = null;
+        org.apache.cxf.binding.soap.SoapBinding sb = null;
         SoapVersion version = null;
         if (binding instanceof SoapBindingInfo) {
             SoapBindingInfo sbi = (SoapBindingInfo) binding;
             version = sbi.getSoapVersion();
-            sb = new SoapBinding(binding, version);
+            sb = new org.apache.cxf.binding.soap.SoapBinding(binding, version);
             // Service wide style
             if (!StringUtils.isEmpty(sbi.getStyle())) {
                 bindingStyle = sbi.getStyle();
@@ -259,7 +371,7 @@
         // Copy all the extensors
         initializeBindingInfo(service, binding, bi);
     
-        org.apache.cxf.tools.common.extensions.soap.SoapBinding wSoapBinding
+        SoapBinding wSoapBinding
             = SOAPBindingUtil.getSoapBinding(bi.getExtensors(ExtensibilityElement.class));
         
         bi.setTransportURI(wSoapBinding.getTransportURI());

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapTransportFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapTransportFactory.java?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapTransportFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapTransportFactory.java Fri Jun  1 01:03:42 2007
@@ -20,14 +20,11 @@
 package org.apache.cxf.binding.soap;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import javax.wsdl.BindingInput;
-import javax.wsdl.BindingOutput;
 import javax.wsdl.Port;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
@@ -36,21 +33,12 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusException;
 import org.apache.cxf.binding.soap.model.SoapBindingInfo;
-import org.apache.cxf.binding.soap.model.SoapHeaderInfo;
-import org.apache.cxf.binding.soap.model.SoapOperationInfo;
+import org.apache.cxf.binding.soap.wsdl11.SoapAddressPlugin;
 import org.apache.cxf.service.Service;
-import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingInfo;
-import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
-import org.apache.cxf.tools.common.extensions.soap.SoapBinding;
-import org.apache.cxf.tools.common.extensions.soap.SoapBody;
-import org.apache.cxf.tools.common.extensions.soap.SoapFault;
-import org.apache.cxf.tools.common.extensions.soap.SoapHeader;
-import org.apache.cxf.tools.common.extensions.soap.SoapOperation;
 import org.apache.cxf.tools.util.SOAPBindingUtil;
 import org.apache.cxf.transport.AbstractTransportFactory;
 import org.apache.cxf.transport.Conduit;
@@ -101,111 +89,24 @@
         try {
             // We need to populate the soap extensibilityelement proxy for soap11 and soap12
             ExtensionRegistry extensionRegistry = WSDLFactory.newInstance().newPopulatedExtensionRegistry();
-            
-            SoapAddress soapAddress = SOAPBindingUtil.createSoapAddress(extensionRegistry, isSoap12);
+            SoapAddressPlugin addresser = new SoapAddressPlugin();
+            addresser.setExtensionRegistry(extensionRegistry);
+                //SoapAddress soapAddress = SOAPBindingUtil.createSoapAddress(extensionRegistry, isSoap12);
             String address = ei.getAddress();
             if (address == null) {
                 address = "http://localhost:9090";
             }
 
-            soapAddress.setLocationURI(address);
-            ei.addExtensor(soapAddress);
-            
-            SoapBinding soapBinding = SOAPBindingUtil.createSoapBinding(extensionRegistry, isSoap12);
-            soapBinding.setStyle(bi.getStyle());
-            soapBinding.setTransportURI(bi.getTransportURI());
-            bi.addExtensor(soapBinding);
-
-            for (BindingOperationInfo b : bi.getOperations()) {
-                for (BindingFaultInfo faultInfo : b.getFaults()) {
-                    SoapFault soapFault = SOAPBindingUtil.createSoapFault(extensionRegistry, isSoap12);
-                    soapFault.setUse("literal");
-                    soapFault.setName(faultInfo.getFaultInfo().getFaultName().getLocalPart());
-                    faultInfo.addExtensor(soapFault);
-                }
-                SoapOperationInfo soi = b.getExtensor(SoapOperationInfo.class);
-                
-                SoapOperation soapOperation = SOAPBindingUtil.createSoapOperation(extensionRegistry,
-                                                                                  isSoap12);
-                soapOperation.setSoapActionURI(soi.getAction());
-                soapOperation.setStyle(soi.getStyle());
-                boolean isRpc = "rpc".equals(soapOperation.getStyle());
-
-                b.addExtensor(soapOperation);
-
-                if (b.getInput() != null) {
-                    List<String> bodyParts = null;
-                    SoapHeaderInfo headerInfo = b.getInput().getExtensor(SoapHeaderInfo.class);
-                    if (headerInfo != null) {
-                        bodyParts = new ArrayList<String>();
-                        for (MessagePartInfo part : b.getInput().getMessageParts()) {
-                            bodyParts.add(part.getName().getLocalPart());
-                        }
-                        
-                        SoapHeader soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
-                                                                                 BindingInput.class,
-                                                                                 isSoap12);
-                        soapHeader.setMessage(b.getInput().getMessageInfo().getName());
-                        soapHeader.setPart(headerInfo.getPart().getName().getLocalPart());
-                        soapHeader.setUse("literal");
-                        bodyParts.remove(headerInfo.getPart().getName().getLocalPart());
-                        b.getInput().addExtensor(soapHeader);
-
-                    } 
-                    SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry,
-                                                                   BindingInput.class,
-                                                                   isSoap12);
-                    body.setUse("literal");
-                    if (isRpc) {
-                        body.setNamespaceURI(b.getName().getNamespaceURI());
-                    }
-
-                    if (bodyParts != null) {
-                        body.setParts(bodyParts);
-                    }
-
-                    b.getInput().addExtensor(body);
-                }
-
-                if (b.getOutput() != null) {
-                    List<String> bodyParts = null;
-                    SoapHeaderInfo headerInfo = b.getOutput().getExtensor(SoapHeaderInfo.class);
-                    if (headerInfo != null) {
-                        bodyParts = new ArrayList<String>();
-                        for (MessagePartInfo part : b.getOutput().getMessageParts()) {
-                            bodyParts.add(part.getName().getLocalPart());
-                        }
-                        SoapHeader soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
-                                                                                 BindingOutput.class,
-                                                                                 isSoap12);
-                        soapHeader.setMessage(b.getOutput().getMessageInfo().getName());
-                        soapHeader.setPart(headerInfo.getPart().getName().getLocalPart());
-                        soapHeader.setUse("literal");
-                        bodyParts.remove(headerInfo.getPart().getName().getLocalPart());
-                        b.getOutput().addExtensor(soapHeader);
-
-                    }
-                    SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry,
-                                                                   BindingOutput.class,
-                                                                   isSoap12);
-                    body.setUse("literal");
-                    if (isRpc) {
-                        body.setNamespaceURI(b.getName().getNamespaceURI());
-                    }
-
-                    if (bodyParts != null) {
-                        body.setParts(bodyParts);
-                    }
-                    
-                    b.getOutput().addExtensor(body);
-                }
-            }
+            //soapAddress.setLocationURI(address);
+            ei.addExtensor(addresser.createExtension(isSoap12, address));
+
+            //createSoapBinding(isSoap12, extensionRegistry, bi);
             
         } catch (WSDLException e) {
             e.printStackTrace();
         }
     }
-    
+
     public EndpointInfo createEndpointInfo(ServiceInfo serviceInfo, BindingInfo b, Port port) {
         String transportURI = "http://schemas.xmlsoap.org/wsdl/soap/";
         if (b instanceof SoapBindingInfo) {

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/SoapAddressPlugin.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/SoapAddressPlugin.java?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/SoapAddressPlugin.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/wsdl11/SoapAddressPlugin.java Fri Jun  1 01:03:42 2007
@@ -28,15 +28,20 @@
 import org.apache.cxf.tools.util.SOAPBindingUtil;
 import org.apache.cxf.wsdl.AbstractWSDLPlugin;
 
-public class SoapAddressPlugin extends AbstractWSDLPlugin {
+public final class SoapAddressPlugin extends AbstractWSDLPlugin {
 
     public ExtensibilityElement createExtension(Map<String, Object> args) throws WSDLException {
+        return createExtension(optionSet(args, ToolConstants.CFG_SOAP12),
+                               getOption(args, ToolConstants.CFG_ADDRESS));
+    }
+
+    public ExtensibilityElement createExtension(final boolean isSOAP12,
+                                                final String address) throws WSDLException {
         SoapAddress soapAddress = null;
-        boolean isSOAP12 = optionSet(args, ToolConstants.CFG_SOAP12);
 
         soapAddress = SOAPBindingUtil.createSoapAddress(registry, isSOAP12);
         
-        soapAddress.setLocationURI(getOption(args, ToolConstants.CFG_ADDRESS));
+        soapAddress.setLocationURI(address);
 
         return soapAddress;
     }

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/Hello.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/Hello.java?view=auto&rev=543420
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/Hello.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/Hello.java Fri Jun  1 01:03:42 2007
@@ -0,0 +1,25 @@
+/**
+ * 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.cxf.jaxws;
+
+
+public interface Hello {
+    int add(int arg0, int arg1);
+}

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsServerFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsServerFactoryBeanTest.java?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsServerFactoryBeanTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsServerFactoryBeanTest.java Fri Jun  1 01:03:42 2007
@@ -18,8 +18,24 @@
  */
 package org.apache.cxf.jaxws;
 
+import java.util.HashMap;
+import java.util.Map;
+import javax.wsdl.Definition;
+import javax.wsdl.xml.WSDLWriter;
+import javax.xml.xpath.XPathConstants;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.calculator.CalculatorPortType;
+import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.apache.cxf.helpers.XPathUtils;
 import org.apache.cxf.jaxws.service.Hello;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.wsdl.WSDLManager;
+import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
 import org.apache.hello_world_doc_lit.GreeterImplDoc;
 import org.junit.Test;
 
@@ -46,5 +62,74 @@
         
         Server server = sf.create();
         assertNotNull(server);
+    }
+
+
+    @Test
+    public void testSimpleServiceClass() throws Exception {
+        ServerFactoryBean factory = new ServerFactoryBean();
+        factory.setServiceClass(Hello.class);
+        String address = "http://localhost:9001/jaxwstest";
+        factory.setAddress(address);
+        Server server = factory.create();
+        Endpoint endpoint = server.getEndpoint();
+        ServiceInfo service = endpoint.getEndpointInfo().getService();
+        assertNotNull(service);
+
+        Bus bus = factory.getBus();
+        Definition def = new ServiceWSDLBuilder(bus, service).build();
+
+        WSDLWriter wsdlWriter = bus.getExtension(WSDLManager.class).getWSDLFactory().newWSDLWriter();
+        def.setExtensionRegistry(bus.getExtension(WSDLManager.class).getExtenstionRegistry());
+        Document doc = wsdlWriter.getDocument(def);
+
+        Map<String, String> ns = new HashMap<String, String>();
+        ns.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+        ns.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+        XPathUtils xpather = new XPathUtils(ns);
+        xpather.isExist("/wsdl:definitions/wsdl:binding/soap:binding",
+                        doc,
+                        XPathConstants.NODE);
+        xpather.isExist("/wsdl:definitions/wsdl:binding/wsdl:operation[@name='add']/soap:operation",
+                        doc,
+                        XPathConstants.NODE);
+        xpather.isExist("/wsdl:definitions/wsdl:service/wsdl:port[@name='add']/soap:address[@location='"
+                        + address + "']",
+                        doc,
+                        XPathConstants.NODE);
+    }
+
+    @Test
+    public void testJaxwsServiceClass() throws Exception {
+        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
+        factory.setServiceClass(CalculatorPortType.class);
+        String address = "http://localhost:9001/jaxwstest";
+        factory.setAddress(address);
+        Server server = factory.create();
+        Endpoint endpoint = server.getEndpoint();
+        ServiceInfo service = endpoint.getEndpointInfo().getService();
+        assertNotNull(service);
+
+        Bus bus = factory.getBus();
+        Definition def = new ServiceWSDLBuilder(bus, service).build();
+
+        WSDLWriter wsdlWriter = bus.getExtension(WSDLManager.class).getWSDLFactory().newWSDLWriter();
+        def.setExtensionRegistry(bus.getExtension(WSDLManager.class).getExtenstionRegistry());
+        Document doc = wsdlWriter.getDocument(def);
+
+        Map<String, String> ns = new HashMap<String, String>();
+        ns.put("wsdl", "http://schemas.xmlsoap.org/wsdl/");
+        ns.put("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
+        XPathUtils xpather = new XPathUtils(ns);
+        xpather.isExist("/wsdl:definitions/wsdl:binding/soap:binding",
+                        doc,
+                        XPathConstants.NODE);
+        xpather.isExist("/wsdl:definitions/wsdl:binding/wsdl:operation[@name='add']/soap:operation",
+                        doc,
+                        XPathConstants.NODE);
+        xpather.isExist("/wsdl:definitions/wsdl:service/wsdl:port[@name='add']/soap:address[@location='"
+                        + address + "']",
+                        doc,
+                        XPathConstants.NODE);
     }
 }

Modified: incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java Fri Jun  1 01:03:42 2007
@@ -319,7 +319,7 @@
         File mapping = new File(apache, "mapping");
         assertTrue(mapping.exists());
         File[] files = mapping.listFiles();
-        assertEquals(7, files.length);
+        assertEquals(9, files.length);
         Class clz = classLoader.loadClass("org.apache.mapping.SomethingServer");
         Method method = clz.getMethod("doSomething", new Class[] {int.class, javax.xml.ws.Holder.class,
                                                                   javax.xml.ws.Holder.class});

Modified: incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/mapping-doc-literal.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/mapping-doc-literal.wsdl?view=diff&rev=543420&r1=543419&r2=543420
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/mapping-doc-literal.wsdl (original)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/mapping-doc-literal.wsdl Fri Jun  1 01:03:42 2007
@@ -44,8 +44,32 @@
                     </sequence>
                 </complexType>
             </element>
+
+	    <element name="gdocsRequest">
+		<complexType>
+		    <sequence>
+			<element name="foo1" type="string"/>
+			<element name="foo2" type="int"/>				
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="gdocsResponse">
+		<complexType>
+		    <sequence>
+			<element name="foo2" type="int"/>
+			<element name="foo3" type="long"/>				
+		    </sequence>
+		</complexType>
+	    </element>
         </schema>
     </types>
+    <message name="gdocsRequest">
+	<part element="tns:gdocsRequest" name="parameters"/>
+    </message>
+    <message name="gdocsResponse">
+	<part element="tns:gdocsResponse" name="parameters"/>
+    </message>
+
     <message name="doSomething">
         <part element="tns:doSomething" name="parameters"/>
     </message>
@@ -57,6 +81,12 @@
             <input message="tns:doSomething" name="doSomething"/>
             <output message="tns:doSomethingResponse" name="doSomethingResponse"/>
         </operation>
+
+        <operation name="gdocsRequest">
+            <input message="tns:gdocsRequest" name="gdocsRequest"/>
+            <output message="tns:gdocsResponse" name="gdocsResponse"/>
+        </operation>
+
     </portType>
     <binding name="SomethingServerSOAPBinding" type="tns:SomethingServer">
         <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>