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 2006/10/17 14:40:37 UTC

svn commit: r464917 [1/2] - in /incubator/cxf/trunk/tools: common/src/main/java/org/apache/cxf/tools/common/ common/src/main/java/org/apache/cxf/tools/util/ java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/ java2wsdl/src/main/java/org/apache/cxf/...

Author: mmao
Date: Tue Oct 17 05:40:33 2006
New Revision: 464917

URL: http://svn.apache.org/viewvc?view=rev&rev=464917
Log:
Tools support SOAP1.2

* WSDL2SOAP support SOAP1.2 now, through -soap12 switch
* WSDL2Service support SOAP1.2 now, through -soap12 switch
* Java2WSDL support SOAP1.2 now, through -soap12 switch
* Added unit tests for those features.
* Fixed the create new binding when there is no binding in wsdl.

Added:
    incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl   (with props)
    incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl   (with props)
    incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl   (with props)
    incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12_nobinding.wsdl   (with props)
Modified:
    incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
    incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java
    incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/SOAPBindingUtil.java
    incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/BindingGenerator.java
    incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/ServiceGenerator.java
    incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/WSDLGenerator.java
    incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
    incubator/cxf/trunk/tools/java2wsdl/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToWSDLProcessorTest.java
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/Messages.properties
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessor.java
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessor.java
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToXMLProcessor.java
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/XSDToWSDLProcessor.java
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
    incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2soap.xml
    incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
    incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessorTest.java

Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java Tue Oct 17 05:40:33 2006
@@ -85,6 +85,7 @@
     public static final String CFG_TRANSPORT = "transport";
     public static final String CFG_SERVICE = "service";
     public static final String CFG_BINDING_ATTR = "attrbinding";
+    public static final String CFG_SOAP12 = "soap12";
 
     // WSDL2Soap Constants
     public static final String CFG_STYLE = "style";

Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java Tue Oct 17 05:40:33 2006
@@ -41,7 +41,7 @@
 
     public static final String BINDING = "Binding";
     public static final String SOAP_HTTP_TRANSPORT = "http://schemas.xmlsoap.org/soap/http";
-    public static final String SOAP12_HTTP_TRANSPORT = "http://www.w3.org/2003/05/soap/bindings/http/";
+    public static final String SOAP12_HTTP_TRANSPORT = "http://www.w3.org/2003/05/soap/bindings/HTTP/";
 
     public static final String DOCUMENT = "document";
     public static final String RPC = "rpc";
@@ -62,15 +62,15 @@
     public static final QName QNAME_BINDING = new QName(NS_WSDL, "binding");
     public static final QName QNAME_DEFINITIONS = new QName(NS_WSDL, "definitions");
     public static final QName QNAME_DOCUMENTATION = new QName(NS_WSDL, "documentation");
-    public static final QName NS_SOAP_BINDING_ADDRESS = new QName("http://schemas.xmlsoap.org/wsdl/soap/",
+    public static final QName NS_SOAP_BINDING_ADDRESS = new QName(SOAP11_NAMESPACE,
                                                                   "address");
     public static final QName NS_XMLHTTP_BINDING_ADDRESS = new QName("http://schemas.xmlsoap.org/wsdl/http/",
                                                                      "address");
-    public static final QName NS_SOAP_BINDING = new QName("http://schemas.xmlsoap.org/wsdl/soap/", "binding");
-    public static final QName NS_SOAP_OPERATION = new QName("http://schemas.xmlsoap.org/wsdl/soap/",
+    public static final QName NS_SOAP_BINDING = new QName(SOAP11_NAMESPACE, "binding");
+    public static final QName NS_SOAP_OPERATION = new QName(SOAP11_NAMESPACE,
                                                             "operation");
-    public static final QName NS_SOAP_BODY = new QName("http://schemas.xmlsoap.org/wsdl/soap/", "body");
-    public static final QName NS_SOAP_FAULT = new QName("http://schemas.xmlsoap.org/wsdl/soap/", "fault");
+    public static final QName NS_SOAP_BODY = new QName(SOAP11_NAMESPACE, "body");
+    public static final QName NS_SOAP_FAULT = new QName(SOAP11_NAMESPACE, "fault");
 
     public static final QName NS_SOAP12_BINDING = new QName("http://schemas.xmlsoap.org/wsdl/soap12/",
                                                             "binding");

Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/SOAPBindingUtil.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/SOAPBindingUtil.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/SOAPBindingUtil.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/SOAPBindingUtil.java Tue Oct 17 05:40:33 2006
@@ -24,10 +24,15 @@
 import java.util.*;
 
 import javax.wsdl.Binding;
+import javax.wsdl.BindingFault;
 import javax.wsdl.BindingInput;
 import javax.wsdl.BindingOperation;
 import javax.wsdl.BindingOutput;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.ExtensionRegistry;
 import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.wsdl.extensions.soap.SOAPBinding;
 import javax.wsdl.extensions.soap.SOAPBody;
@@ -40,11 +45,14 @@
 import javax.wsdl.extensions.soap12.SOAP12Fault;
 import javax.wsdl.extensions.soap12.SOAP12Header;
 import javax.wsdl.extensions.soap12.SOAP12Operation;
+import javax.xml.namespace.QName;
 
 import org.apache.cxf.tools.common.ExtensionInvocationHandler;
+import org.apache.cxf.tools.common.WSDLConstants;
 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;
 
@@ -249,6 +257,13 @@
         return obj instanceof SOAPBinding || obj instanceof SOAP12Binding;
     }
 
+    public static SoapFault getSoapFault(Object obj) {
+        if (isSOAPFault(obj)) {
+            return getProxy(SoapFault.class, obj);
+        }
+        return null;
+    }
+
     public static boolean isMixedStyle(Binding binding) {
         Iterator ite = binding.getExtensibilityElements().iterator();
         String bindingStyle = "";
@@ -325,4 +340,103 @@
     public static boolean isSOAPFault(Object obj) {
         return obj instanceof SOAPFault || obj instanceof SOAP12Fault;
     }
+
+    public static SoapAddress createSoapAddress(ExtensionRegistry extReg, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Address)extReg.createExtension(Port.class,
+                                                               WSDLConstants.NS_SOAP12_BINDING_ADDRESS);
+        } else {
+            extElement = (SOAPAddress)extReg.createExtension(Port.class,
+                                                             WSDLConstants.NS_SOAP_BINDING_ADDRESS);
+        }
+        return getSoapAddress(extElement);
+    }
+
+    public static SoapBody createSoapBody(ExtensionRegistry extReg, Class clz, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Body)extReg.createExtension(clz, new QName(WSDLConstants.SOAP12_NAMESPACE,
+                                                                           "body"));
+        } else {
+            extElement = (SOAPBody)extReg.createExtension(clz, new QName(WSDLConstants.SOAP11_NAMESPACE,
+                                                                         "body"));
+        }
+        return getSoapBody(extElement);
+    }
+
+    public static SoapBinding createSoapBinding(ExtensionRegistry extReg, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Binding)extReg.createExtension(Binding.class,
+                                                               new QName(WSDLConstants.SOAP12_NAMESPACE,
+                                                                         "binding"));
+            ((SOAP12Binding)extElement).setTransportURI(WSDLConstants.SOAP12_HTTP_TRANSPORT);
+        } else {
+            extElement = (SOAPBinding)extReg.createExtension(Binding.class,
+                                                             new QName(WSDLConstants.SOAP11_NAMESPACE,
+                                                                       "binding"));
+            ((SOAPBinding)extElement).setTransportURI(WSDLConstants.NS_SOAP11_HTTP_BINDING);
+        }
+        return getSoapBinding(extElement);
+    }
+
+    public static SoapOperation createSoapOperation(ExtensionRegistry extReg, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Operation)extReg.createExtension(BindingOperation.class,
+                                                                 new QName(WSDLConstants.SOAP12_NAMESPACE,
+                                                                           "operation"));
+        } else {
+            extElement = (SOAPOperation)extReg.createExtension(BindingOperation.class,
+                                                               new QName(WSDLConstants.SOAP11_NAMESPACE,
+                                                                         "operation"));
+        }
+        return getSoapOperation(extElement);
+    }
+
+    public static SoapFault createSoapFault(ExtensionRegistry extReg, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Fault)extReg.createExtension(BindingFault.class,
+                                                             new QName(WSDLConstants.SOAP12_NAMESPACE,
+                                                                       "fault"));
+        } else {
+            extElement = (SOAPFault)extReg.createExtension(BindingFault.class,
+                                                           new QName(WSDLConstants.SOAP11_NAMESPACE,
+                                                                     "fault"));
+        }
+        return getSoapFault(extElement);
+    }
+
+    public static SoapHeader createSoapHeader(ExtensionRegistry extReg, Class clz, boolean isSOAP12)
+        throws WSDLException {
+        ExtensibilityElement extElement = null;
+        if (isSOAP12) {
+            extElement = (SOAP12Header)extReg.createExtension(clz,
+                                                              new QName(WSDLConstants.SOAP12_NAMESPACE,
+                                                                        "header"));
+        } else {
+            extElement = (SOAPHeader)extReg.createExtension(clz,
+                                                            new QName(WSDLConstants.SOAP11_NAMESPACE,
+                                                                      "header"));
+        }
+        return getSoapHeader(extElement);
+    }
+
+
+    public static void addSOAPNamespace(Definition definition, boolean isSOAP12) {
+        Map namespaces = definition.getNamespaces();
+        if (isSOAP12
+            && !namespaces.values().contains(WSDLConstants.SOAP12_NAMESPACE)) {
+            definition.addNamespace("soap12", WSDLConstants.SOAP12_NAMESPACE);
+        } else if (!namespaces.values().contains(WSDLConstants.SOAP11_NAMESPACE)) {
+            definition.addNamespace("soap", WSDLConstants.SOAP12_NAMESPACE);
+        }
+    }    
 }

Modified: incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/BindingGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/BindingGenerator.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/BindingGenerator.java (original)
+++ incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/BindingGenerator.java Tue Oct 17 05:40:33 2006
@@ -32,20 +32,24 @@
 import javax.wsdl.Definition;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
-import javax.wsdl.extensions.soap.SOAPBody;
-import javax.wsdl.extensions.soap.SOAPHeader;
-import javax.wsdl.extensions.soap.SOAPOperation;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.tools.common.ToolException;
 import org.apache.cxf.tools.common.WSDLConstants;
+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.common.model.JavaMethod;
 import org.apache.cxf.tools.common.model.JavaParameter;
 import org.apache.cxf.tools.common.model.WSDLModel;
 import org.apache.cxf.tools.common.model.WSDLParameter;
 import org.apache.cxf.tools.java2wsdl.processor.JavaToWSDLProcessor;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
+
 
 public class BindingGenerator {
     private static final Logger LOG = LogUtils.getL7dLogger(JavaToWSDLProcessor.class);
@@ -60,19 +64,22 @@
     }
 
     public void generate() {
+        generate(false);
+    }
+    
+    public void generate(boolean isSOAP12) {
         Binding binding = definition.createBinding();
 
         binding.setQName(new QName(WSDLConstants.NS_WSDL, wmodel.getPortTypeName() + "Binding"));
-        binding.setPortType(definition.getPortType(new QName(wmodel.getTargetNameSpace(), wmodel
-            .getPortTypeName())));
+        binding.setPortType(definition.getPortType(new QName(wmodel.getTargetNameSpace(),
+                                                             wmodel.getPortTypeName())));
 
-        // genearte the soap binding
+        // default to genearte the soap 1.1 binding
 
-        javax.wsdl.extensions.soap.SOAPBinding soapBinding;
+        SoapBinding soapBinding = null;
         try {
-            soapBinding = (javax.wsdl.extensions.soap.SOAPBinding)extensionRegistry
-                .createExtension(Binding.class, new QName(WSDLConstants.SOAP11_NAMESPACE, "binding"));
-            soapBinding.setTransportURI("http://schemas.xmlsoap.org/soap/http");
+            soapBinding = SOAPBindingUtil.createSoapBinding(extensionRegistry, isSOAP12);
+            
             soapBinding.setStyle(wmodel.getStyle().toString().toLowerCase());
             binding.addExtensibilityElement(soapBinding);
         } catch (WSDLException e) {
@@ -80,88 +87,72 @@
             e.printStackTrace();
         }
 
-        generateBindingOperation(binding);
+        try {
+            generateBindingOperation(binding, isSOAP12);
+        } catch (WSDLException e) {
+            throw new ToolException(e.getMessage(), e);
+        }
         binding.setUndefined(false);
         definition.addBinding(binding);
 
     }
 
-    private void generateBindingOperation(Binding binding) {
+    private void generateBindingOperation(Binding binding, boolean isSOAP12) throws WSDLException {
         for (JavaMethod jmethod : wmodel.getJavaMethods()) {
             BindingOperation bindOperation = definition.createBindingOperation();
             bindOperation.setName(jmethod.getName());
-            generateBindingOperationInputOutPut(bindOperation, jmethod);
+            generateBindingOperationInputOutPut(bindOperation, jmethod, isSOAP12);
             binding.addBindingOperation(bindOperation);
         }
 
     }
 
-    private void generateBindingOperationInputOutPut(BindingOperation operation, JavaMethod jmethod) {
+    private void generateBindingOperationInputOutPut(BindingOperation operation,
+                                                     JavaMethod jmethod,
+                                                     boolean isSOAP12)
+        throws WSDLException {
         // generate soap binding action
-        SOAPOperation soapOperation = generateSoapAction();
+
+        SoapOperation soapOperation = SOAPBindingUtil.createSoapOperation(extensionRegistry, isSOAP12);
+        
         soapOperation.setStyle(jmethod.getSoapStyle().name().toLowerCase());
         if (jmethod.getSoapAction() != null && !jmethod.getSoapAction().equals("")) {
             soapOperation.setSoapActionURI(jmethod.getSoapAction());
         }
         operation.addExtensibilityElement(soapOperation);
 
-        generateInputSoapBody(jmethod, operation, jmethod.getRequest());
-
-        generateOutputSoapBody(jmethod, operation, jmethod.getResponse());
+        generateInputSoapBody(jmethod, operation, jmethod.getRequest(), isSOAP12);
+        
+        generateOutputSoapBody(jmethod, operation, jmethod.getResponse(), isSOAP12);
 
         for (org.apache.cxf.tools.common.model.WSDLException ex : jmethod.getWSDLExceptions()) {
 
             BindingFault bindingFault = definition.createBindingFault();
             bindingFault.setName(ex.getExcpetionClass().getSimpleName());
             operation.addBindingFault(bindingFault);
-            javax.wsdl.extensions.soap.SOAPFault soapFault = null;
-            try {
-                soapFault = (javax.wsdl.extensions.soap.SOAPFault)extensionRegistry
-                    .createExtension(BindingFault.class, new QName(WSDLConstants.SOAP11_NAMESPACE, "fault"));
-                soapFault.setUse("literal");
-                soapFault.setName(ex.getExcpetionClass().getSimpleName());
-            } catch (WSDLException e) {
-                throw new ToolException(e.getMessage(), e);
-            }
+            SoapFault soapFault = SOAPBindingUtil.createSoapFault(extensionRegistry, isSOAP12);
+            soapFault.setUse("literal");
+            soapFault.setName(ex.getExcpetionClass().getSimpleName());
             bindingFault.addExtensibilityElement(soapFault);
 
         }
 
     }
 
-    private SOAPOperation generateSoapAction() {
-        SOAPOperation soapOperation = null;
-        try {
-            soapOperation = (SOAPOperation)extensionRegistry
-                .createExtension(BindingOperation.class, new QName(WSDLConstants.SOAP11_NAMESPACE,
-                                                                   "operation"));
-        } catch (WSDLException e) {
-            throw new ToolException(e.getMessage(), e);
-        }
-
-        return soapOperation;
-    }
-
-    private void generateOutputSoapBody(JavaMethod jmethod, BindingOperation operation, WSDLParameter param) {
+    private void generateOutputSoapBody(JavaMethod jmethod,
+                                        BindingOperation operation,
+                                        WSDLParameter param,
+                                        boolean isSOAP12) throws WSDLException {
         if (param == null) {
             return;
         }
 
-        SOAPBody body = null;
-
         BindingOutput bindingOutput = definition.createBindingOutput();
         bindingOutput.setName(param.getName());
 
         operation.setBindingOutput(bindingOutput);
-
-        try {
-            body = (SOAPBody)extensionRegistry.createExtension(BindingOutput.class,
-                                                               new QName(WSDLConstants.SOAP11_NAMESPACE,
-                                                                         "body"));
-        } catch (WSDLException e1) {
-            throw new ToolException(e1.getMessage(), e1);
-        }
-
+        
+        SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry, BindingOutput.class, isSOAP12);
         if (jmethod.getSoapUse() == SOAPBinding.Use.LITERAL) {
             body.setUse("literal");
         } else {
@@ -181,20 +172,14 @@
                 parts.add(parameter.getPartName());
             }
             body.setParts(parts);
-            SOAPHeader soapHeader = null;
+            SoapHeader soapHeader = null;
             for (JavaParameter jp : headerParams) {
-
-                try {
-                    soapHeader = (SOAPHeader)extensionRegistry
-                        .createExtension(BindingOutput.class, new QName(WSDLConstants.SOAP11_NAMESPACE,
-                                                                        "header"));
-                    soapHeader.setMessage(new QName(param.getTargetNamespace(), param.getName()));
-                    soapHeader.setPart(jp.getPartName());
-                    soapHeader.setUse("literal");
-
-                } catch (WSDLException e) {
-                    throw new ToolException(e.getMessage(), e);
-                }
+                soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
+                                                              BindingOutput.class,
+                                                              isSOAP12);
+                soapHeader.setMessage(new QName(param.getTargetNamespace(), param.getName()));
+                soapHeader.setPart(jp.getPartName());
+                soapHeader.setUse("literal");
             }
 
             if (jmethod.getSoapStyle() == SOAPBinding.Style.RPC) {
@@ -207,25 +192,19 @@
 
     }
 
-    private void generateInputSoapBody(JavaMethod jmethod, BindingOperation operation, WSDLParameter param) {
+    private void generateInputSoapBody(JavaMethod jmethod,
+                                       BindingOperation operation,
+                                       WSDLParameter param,
+                                       boolean isSOAP12) throws WSDLException {
         if (param == null) {
             return;
         }
-        SOAPBody body = null;
-
         BindingInput bindingInput = definition.createBindingInput();
         bindingInput.setName(param.getName());
 
         operation.setBindingInput(bindingInput);
 
-        try {
-            body = (SOAPBody)extensionRegistry.createExtension(BindingInput.class,
-                                                               new QName(WSDLConstants.SOAP11_NAMESPACE,
-                                                                         "body"));
-        } catch (WSDLException e1) {
-            throw new ToolException(e1.getMessage(), e1);
-        }
-
+        SoapBody body = SOAPBindingUtil.createSoapBody(extensionRegistry, BindingInput.class, isSOAP12);
         if (jmethod.getSoapUse() == SOAPBinding.Use.LITERAL) {
             body.setUse("literal");
         } else {
@@ -246,23 +225,16 @@
                 parts.add(parameter.getPartName());
             }
             body.setParts(parts);
-            SOAPHeader soapHeader = null;
+            SoapHeader soapHeader = null;
             for (JavaParameter jp : headerParams) {
-
-                try {
-                    soapHeader = (SOAPHeader)extensionRegistry
-                        .createExtension(BindingInput.class, new QName(WSDLConstants.SOAP11_NAMESPACE,
-                                                                       "header"));
-
-                    soapHeader.setMessage(new QName(param.getTargetNamespace(), param.getName()));
-                    soapHeader.setPart(jp.getPartName());
-                    soapHeader.setUse("literal");
-
-                } catch (WSDLException e) {
-                    throw new ToolException(e.getMessage(), e);
-                }
+                soapHeader = SOAPBindingUtil.createSoapHeader(extensionRegistry,
+                                                              BindingInput.class,
+                                                              isSOAP12);
+                soapHeader.setMessage(new QName(param.getTargetNamespace(), param.getName()));
+                soapHeader.setPart(jp.getPartName());
+                soapHeader.setUse("literal");
             }
-
+            
             if (jmethod.getSoapStyle() == SOAPBinding.Style.RPC) {
                 body.setNamespaceURI(param.getTargetNamespace());
             }

Modified: incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/ServiceGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/ServiceGenerator.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/ServiceGenerator.java (original)
+++ incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/ServiceGenerator.java Tue Oct 17 05:40:33 2006
@@ -25,12 +25,13 @@
 import javax.wsdl.Service;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
-import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.tools.common.ToolException;
 import org.apache.cxf.tools.common.WSDLConstants;
+import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
 import org.apache.cxf.tools.common.model.WSDLModel;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
 
 public class ServiceGenerator {
     private static final String ADDRESS_URI = "http://localhost/changme";
@@ -46,6 +47,10 @@
     }
     
     public void generate() {
+        generate(false);
+    }
+    
+    public void generate(boolean isSOAP12) {
         Service service = definition.createService();
         service.setQName(new QName(WSDLConstants.WSDL_PREFIX, wmodel.getServiceName()));
         Port port = definition.createPort();
@@ -54,10 +59,9 @@
         String targetNameSpace = wmodel.getTargetNameSpace();
         binding.setQName(new QName(targetNameSpace, wmodel.getPortTypeName() + "Binding"));
         port.setBinding(binding);
-        SOAPAddress soapAddress = null;
+        SoapAddress soapAddress = null;
         try {
-            soapAddress = (SOAPAddress)extensionRegistry
-                .createExtension(Port.class, new QName(WSDLConstants.SOAP11_NAMESPACE, "address"));
+            soapAddress = SOAPBindingUtil.createSoapAddress(extensionRegistry, isSOAP12);
             soapAddress.setLocationURI(ADDRESS_URI);
         } catch (WSDLException e) {
             throw new ToolException(e.getMessage(), e);

Modified: incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/WSDLGenerator.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/WSDLGenerator.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/WSDLGenerator.java (original)
+++ incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/generator/WSDLGenerator.java Tue Oct 17 05:40:33 2006
@@ -27,6 +27,7 @@
 import org.apache.cxf.tools.common.ToolContext;
 import org.apache.cxf.tools.common.ToolException;
 import org.apache.cxf.tools.common.model.WSDLModel;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
 
 public class WSDLGenerator {
     private final WSDLModel wmodel;
@@ -59,13 +60,17 @@
         MessagePortTypeGenerator messagePortTypeGen = new MessagePortTypeGenerator(wmodel);
         messagePortTypeGen.generate();
         BindingGenerator bindingGen = new BindingGenerator(wmodel);
-        bindingGen.generate();
+        bindingGen.generate(isSOAP12());
         ServiceGenerator serviceGen = new ServiceGenerator(wmodel);
-        serviceGen.generate();
+        serviceGen.generate(isSOAP12());
         writeDefinition();
 
     }
 
+    private boolean isSOAP12() {
+        return env.optionSet(ToolConstants.CFG_SOAP12);
+    }
+
     private void preGenerate() {
         Object obj = env.get(ToolConstants.CFG_OUTPUTFILE);
         wsdlFile = obj == null ? "./" + wmodel.getServiceName() + ".wsdl" : (String)obj;
@@ -78,7 +83,7 @@
         wmodel.setPortName(portTypeName);
 
     }
-
+   
     private boolean writeDefinition() {
 
         WSDLWriter writer = wsdlFactory.newWSDLWriter();
@@ -92,6 +97,7 @@
         }
 
         try {
+            SOAPBindingUtil.addSOAPNamespace(definition, isSOAP12());
             writer.writeWSDL(this.definition, outstream);
         } catch (javax.wsdl.WSDLException e) {
             throw new ToolException(e.getMessage(), e);

Modified: incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml (original)
+++ incubator/cxf/trunk/tools/java2wsdl/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml Tue Oct 17 05:40:33 2006
@@ -56,7 +56,13 @@
 		    <annotation>class-path</annotation>
 		</associatedArgument>
 	    </option>
-	    
+
+	    <option id="soap12" maxOccurs="1">
+		<annotation>
+		    Specify to generate SOAP 1.2 binding
+		</annotation>
+		<switch>soap12</switch>
+	    </option>
 
 	    <option id="tns" maxOccurs="1">
 		<annotation>

Modified: incubator/cxf/trunk/tools/java2wsdl/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToWSDLProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToWSDLProcessorTest.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToWSDLProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/java2wsdl/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToWSDLProcessorTest.java Tue Oct 17 05:40:33 2006
@@ -20,15 +20,21 @@
 package org.apache.cxf.tools.java2wsdl.processor;
 
 import java.io.File;
+import java.util.Iterator;
 
+import javax.wsdl.Binding;
 import javax.wsdl.Definition;
+import javax.wsdl.Port;
 import javax.wsdl.Service;
+import javax.wsdl.extensions.soap12.SOAP12Address;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.helpers.WSDLHelper;
-
 import org.apache.cxf.tools.common.ToolConstants;
-
+import org.apache.cxf.tools.common.WSDLConstants;
+import org.apache.cxf.tools.common.extensions.soap.SoapBinding;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
 import org.apache.cxf.tools.wsdl2java.processor.WSDLToJavaProcessor;
 
 public class JavaToWSDLProcessorTest extends ProcessorTestBase {
@@ -39,28 +45,26 @@
     private String serviceName = "cxfService";
     private WSDLHelper wsdlHelper = new WSDLHelper();
     private File classFile;
-    
+
     public void setUp() throws Exception {
-       
-        
+
         super.setUp();
         wj2Processor = new WSDLToJavaProcessor();
         j2wProcessor = new JavaToWSDLProcessor();
         classFile = new java.io.File(output.getCanonicalPath() + "/classes");
         classFile.mkdir();
         System.setProperty("java.class.path", getClassPath() + classFile.getCanonicalPath()
-                           + File.separatorChar);
+                                              + File.separatorChar);
     }
-    
+
     public void tearDown() {
         super.tearDown();
         j2wProcessor = null;
         wj2Processor = null;
     }
-    
 
     public void testAsyn() throws Exception {
-        
+
         env.put(ToolConstants.CFG_COMPILE, "compile");
         env.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
         env.put(ToolConstants.CFG_CLASSDIR, output.getCanonicalPath() + "/classes");
@@ -68,7 +72,6 @@
         wj2Processor.setEnvironment(env);
         wj2Processor.process();
 
-
         env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/asyn.wsdl");
         env.put(ToolConstants.CFG_CLASSNAME, "org.apache.hello_world_async_soap_http.GreeterAsync");
         env.put(ToolConstants.CFG_TNS, tns);
@@ -96,27 +99,25 @@
         wj2Processor.setEnvironment(env);
         wj2Processor.process();
 
-
         env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/doc_wrapped_bare.wsdl");
         env.put(ToolConstants.CFG_CLASSNAME, "org.apache.hello_world_doc_wrapped_bare.Greeter");
         env.put(ToolConstants.CFG_TNS, tns);
         env.put(ToolConstants.CFG_SERVICENAME, serviceName);
         j2wProcessor.setEnvironment(env);
         j2wProcessor.process();
-        
+
         File wsdlFile = new File(output, "doc_wrapped_bare.wsdl");
         assertTrue("Fail to generate wsdl file", wsdlFile.exists());
-        
+
         Definition def = wsdlHelper.getDefinition(wsdlFile);
         Service wsdlService = def.getService(new QName(tns, serviceName));
         assertNotNull("Generate WSDL Service Error", wsdlService);
-        
+
         File schemaFile = new File(output, "schema1.xsd");
         assertTrue("Fail to generate schema file", schemaFile.exists());
 
     }
-    
-    
+
     public void testDocLitUseClassPathFlag() throws Exception {
         env.put(ToolConstants.CFG_COMPILE, "compile");
         env.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
@@ -124,7 +125,7 @@
         env.put(ToolConstants.CFG_WSDLURL, getLocation("/java2wsdl_wsdl/hello_world_doc_lit.wsdl"));
         wj2Processor.setEnvironment(env);
         wj2Processor.process();
- 
+
         System.setProperty("java.class.path", "");
         env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/doc_lit.wsdl");
         env.put(ToolConstants.CFG_CLASSNAME, "org.apache.hello_world_doc_lit.Greeter");
@@ -135,16 +136,16 @@
         j2wProcessor.process();
         File wsdlFile = new File(output, "doc_lit.wsdl");
         assertTrue("Generate Wsdl Fail", wsdlFile.exists());
-        
+
         Definition def = wsdlHelper.getDefinition(wsdlFile);
         Service wsdlService = def.getService(new QName(tns, serviceName));
         assertNotNull("Generate WSDL Service Error", wsdlService);
-        
+
         File schemaFile = new File(output, "schema1.xsd");
         assertTrue("Generate schema file Fail", schemaFile.exists());
-        
+
     }
-    
+
     public void testRPCLit() throws Exception {
         env.put(ToolConstants.CFG_COMPILE, "compile");
         env.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
@@ -152,30 +153,77 @@
         env.put(ToolConstants.CFG_WSDLURL, getLocation("/java2wsdl_wsdl/hello_world_rpc_lit.wsdl"));
         wj2Processor.setEnvironment(env);
         wj2Processor.process();
-   
-        env.put(ToolConstants.CFG_OUTPUTFILE,
-                output.getPath() + "/rpc_lit.wsdl");
+
+        env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/rpc_lit.wsdl");
         env.put(ToolConstants.CFG_CLASSNAME, "org.apache.hello_world_rpclit.GreeterRPCLit");
         env.put(ToolConstants.CFG_TNS, tns);
         env.put(ToolConstants.CFG_SERVICENAME, serviceName);
-        
+
         j2wProcessor.setEnvironment(env);
         j2wProcessor.process();
         File wsdlFile = new File(output, "rpc_lit.wsdl");
         assertTrue(wsdlFile.exists());
-        
+
         Definition def = wsdlHelper.getDefinition(wsdlFile);
         Service wsdlService = def.getService(new QName(tns, serviceName));
         assertNotNull("Generate WSDL Service Error", wsdlService);
-        
-        
-        File schemaFile = new File(output, "schema1.xsd");        
+
+        File schemaFile = new File(output, "schema1.xsd");
         assertTrue(schemaFile.exists());
-        File schemaFile2 = new File(output, "schema2.xsd");        
+        File schemaFile2 = new File(output, "schema2.xsd");
         assertTrue(schemaFile2.exists());
     }
 
-    
+    public void testSOAP12() throws Exception {
+        env.put(ToolConstants.CFG_COMPILE, "compile");
+        env.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+        env.put(ToolConstants.CFG_CLASSDIR, output.getCanonicalPath() + "/classes");
+        env.put(ToolConstants.CFG_WSDLURL, getLocation("/java2wsdl_wsdl/hello_world_soap12.wsdl"));
+        wj2Processor.setEnvironment(env);
+        wj2Processor.process();
+
+        env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/soap12.wsdl");
+        env.put(ToolConstants.CFG_CLASSNAME, "org.apache.hello_world_soap12_http.Greeter");
+        env.put(ToolConstants.CFG_SERVICENAME, serviceName);
+        env.put(ToolConstants.CFG_SOAP12, "soap12");
+
+        j2wProcessor.setEnvironment(env);
+        j2wProcessor.process();
+        File wsdlFile = new File(output, "soap12.wsdl");
+        assertTrue(wsdlFile.exists());
+        assertTrue("WSDL file: " + wsdlFile.toString() + " is empty", wsdlFile.length() > 0);
+
+        Definition def = wsdlHelper.getDefinition(wsdlFile);
+        Service wsdlService = def.getService(new QName(def.getTargetNamespace(), serviceName));
+        assertNotNull("Generate WSDL Service Error", wsdlService);
+
+        File schemaFile = new File(output, "schema1.xsd");
+        assertTrue(schemaFile.exists());
+        Binding binding = def.getBinding(new QName(def.getTargetNamespace(), "GreeterBinding"));
+        assertNotNull(binding);
+
+        Iterator it = binding.getExtensibilityElements().iterator();
+
+        while (it.hasNext()) {
+            Object obj = it.next();
+            assertTrue(SOAPBindingUtil.isSOAPBinding(obj));
+            assertTrue(obj instanceof SOAP12Binding);
+            SoapBinding soapBinding = SOAPBindingUtil.getSoapBinding(obj);
+            assertNotNull(soapBinding);
+            assertTrue("document".equalsIgnoreCase(soapBinding.getStyle()));
+            assertTrue(WSDLConstants.SOAP12_HTTP_TRANSPORT.equalsIgnoreCase(soapBinding.getTransportURI()));
+        }
+        Port port = wsdlService.getPort("GreeterPort");
+        assertNotNull(port);
+
+        it = port.getExtensibilityElements().iterator();
+        while (it.hasNext()) {
+            Object obj = it.next();
+            assertTrue(SOAPBindingUtil.isSOAPAddress(obj));
+            assertTrue(obj instanceof SOAP12Address);
+        }
+    }
+
     private String getLocation(String wsdlFile) {
         return JavaToWSDLProcessorTest.class.getResource(wsdlFile).getFile();
     }

Added: incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl?view=auto&rev=464917
==============================================================================
--- incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl (added)
+++ incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl Tue Oct 17 05:40:33 2006
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+
+<definitions name="HelloWorld"
+	     xmlns="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:tns="http://apache.org/hello_world_soap12_http"
+	     xmlns:x1="http://apache.org/hello_world_soap12_http/types"
+	     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	     targetNamespace="http://apache.org/hello_world_soap12_http"
+	     xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
+    <wsdl:types>
+	<schema targetNamespace="http://apache.org/hello_world_soap12_http/types" 
+		xmlns="http://www.w3.org/2001/XMLSchema" 
+		xmlns:x1="http://apache.org/hello_world_soap12_http/types" 
+		elementFormDefault="qualified">
+	    <element name="sayHi">
+		<complexType/>
+	    </element>
+	    <element name="sayHiResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+        </schema>
+    </wsdl:types>
+
+    <wsdl:message name="sayHiRequest">
+        <wsdl:part name="in" element="x1:sayHi"/>
+    </wsdl:message>
+    <wsdl:message name="sayHiResponse">
+        <wsdl:part name="out" element="x1:sayHiResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="Greeter">
+        <wsdl:operation name="sayHi">
+            <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+            <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+        </wsdl:operation>
+    </wsdl:portType>
+
+    <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
+	<soap12:binding transport="http://www.w3.org/2003/05/soap/bindings/HTTP/" style="document" />
+	<operation name="sayHi">
+	    <soap12:operation style="document" soapAction=""/>
+	    <input>
+		<soap12:body use="literal" />
+	    </input>
+	    <output>
+		<soap12:body use="literal" />
+	    </output>
+	</operation>
+    </wsdl:binding>
+
+
+</definitions>

Propchange: incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/tools/java2wsdl/src/test/resources/java2wsdl_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/Messages.properties?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/Messages.properties (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/Messages.properties Tue Oct 17 05:40:33 2006
@@ -41,7 +41,7 @@
 SOAPBINDING_STYLE_NOT_PROVIEDED = For rpc style binding, soap binding namespace (-n) must be provided
 FAIL_TO_CREATE_SOAPBINDING = Fail to create soapbinding
 FAIL_TO_CREATE_XMLBINDING = Fail to create xml binding
-FAIl_TO_CREATE_SOAPADDRESS = Fail to create soap address
+FAIL_TO_CREATE_SOAPADDRESS = Fail to create soap address
 
 SKIP_OVERLOADED_OPERATION=Skipping overloaded operation: {0}
 NO_INPUT_MESSAGE=Problem outputting method for {0} as no input message was found for input named {1}

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessor.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessor.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessor.java Tue Oct 17 05:40:33 2006
@@ -29,7 +29,6 @@
 import javax.wsdl.Service;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
-import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.wsdl.xml.WSDLWriter;
 import javax.xml.namespace.QName;
 
@@ -39,6 +38,8 @@
 import org.apache.cxf.tools.common.WSDLConstants;
 import org.apache.cxf.tools.common.extensions.jms.JMSAddress;
 import org.apache.cxf.tools.common.extensions.jms.JMSAddressSerializer;
+import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
 
 public class WSDLToServiceProcessor extends AbstractWSDLToProcessor {
 
@@ -101,6 +102,10 @@
         return (port == null) ? false : true;
     }
 
+    private boolean isSOAP12() {
+        return env.optionSet(ToolConstants.CFG_SOAP12);
+    }
+
     private boolean isBindingExisted() {
         Map bindings = wsdlDefinition.getBindings();
         if (bindings == null) {
@@ -142,7 +147,7 @@
         try {
             wsdlWriter.writeWSDL(wsdlDefinition, outputWriter);
         } catch (WSDLException wse) {
-            Message msg = new Message("FAIl_TO_WRITE_WSDL", LOG);
+            Message msg = new Message("FAIL_TO_WRITE_WSDL", LOG);
             throw new ToolException(msg, wse);
         }
         try {
@@ -160,14 +165,14 @@
             extReg = wsdlFactory.newPopulatedExtensionRegistry();
         }
         if ("http".equalsIgnoreCase((String)env.get(ToolConstants.CFG_TRANSPORT))) {
-            SOAPAddress soapAddress = null;
+            SoapAddress soapAddress = null;
             try {
-                soapAddress = (SOAPAddress)extReg.createExtension(Port.class,
-                                                                  WSDLConstants.NS_SOAP_BINDING_ADDRESS);
+                soapAddress = SOAPBindingUtil.createSoapAddress(extReg, isSOAP12());
             } catch (WSDLException wse) {
-                Message msg = new Message("FAIl_TO_CREATE_SOAPADDRESS", LOG);
+                Message msg = new Message("FAIL_TO_CREATE_SOAPADDRESS", LOG);
                 throw new ToolException(msg, wse);
             }
+            
             if (env.get(ToolConstants.CFG_ADDRESS) != null) {
                 soapAddress.setLocationURI((String)env.get(ToolConstants.CFG_ADDRESS));
             } else {

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessor.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessor.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessor.java Tue Oct 17 05:40:33 2006
@@ -38,10 +38,6 @@
 import javax.wsdl.PortType;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.wsdl.extensions.soap.SOAPBody;
-import javax.wsdl.extensions.soap.SOAPFault;
-import javax.wsdl.extensions.soap.SOAPOperation;
 import javax.wsdl.xml.WSDLWriter;
 import javax.xml.namespace.QName;
 
@@ -49,6 +45,12 @@
 import org.apache.cxf.tools.common.ToolConstants;
 import org.apache.cxf.tools.common.ToolException;
 import org.apache.cxf.tools.common.WSDLConstants;
+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.SoapOperation;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
+
 
 public class WSDLToSoapProcessor extends AbstractWSDLToProcessor {
 
@@ -67,6 +69,10 @@
         doAppendBinding();
     }
 
+    private boolean isSOAP12() {
+        return env.optionSet(ToolConstants.CFG_SOAP12);        
+    }
+
     private void validate() throws ToolException {
         if (isBindingExisted()) {
             Message msg = new Message("BINDING_ALREADY_EXIST", LOG);
@@ -159,8 +165,8 @@
     private void doAppendBinding() throws ToolException {
         if (binding == null) {
             binding = wsdlDefinition.createBinding();
-            binding.setQName(new QName(wsdlDefinition.getTargetNamespace(), (String)env
-                .get(ToolConstants.CFG_BINDING)));
+            binding.setQName(new QName(wsdlDefinition.getTargetNamespace(),
+                                       (String)env.get(ToolConstants.CFG_BINDING)));
             binding.setUndefined(false);
             binding.setPortType(portType);
         }
@@ -189,15 +195,17 @@
         if (extReg == null) {
             extReg = wsdlFactory.newPopulatedExtensionRegistry();
         }
-        SOAPBinding soapBinding = null;
+
+        SOAPBindingUtil.addSOAPNamespace(wsdlDefinition, isSOAP12());
+        
+        SoapBinding soapBinding = null;
         try {
-            soapBinding = (SOAPBinding)extReg.createExtension(Binding.class, WSDLConstants.NS_SOAP_BINDING);
+            soapBinding = SOAPBindingUtil.createSoapBinding(extReg, isSOAP12());
         } catch (WSDLException wse) {
             Message msg = new Message("FAIL_TO_CREATE_SOAPBINDING", LOG);
             throw new ToolException(msg, wse);
         }
         soapBinding.setStyle((String)env.get(ToolConstants.CFG_STYLE));
-        soapBinding.setTransportURI(WSDLConstants.NS_SOAP11_HTTP_BINDING);
         binding.addExtensibilityElement(soapBinding);
     }
 
@@ -236,10 +244,10 @@
         if (extReg == null) {
             extReg = wsdlFactory.newPopulatedExtensionRegistry();
         }
-        SOAPOperation soapOperation = null;
+        SoapOperation soapOperation = null;
+        
         try {
-            soapOperation = (SOAPOperation)extReg.createExtension(BindingOperation.class,
-                                                                  WSDLConstants.NS_SOAP_OPERATION);
+            soapOperation = SOAPBindingUtil.createSoapOperation(extReg, isSOAP12());
         } catch (WSDLException wse) {
             Message msg = new Message("FAIL_TO_CREATE_SOAPBINDING", LOG);
             throw new ToolException(msg, wse);
@@ -269,13 +277,13 @@
         return bo;
     }
 
-    private SOAPBody getSoapBody(Class parent) throws ToolException {
+    private SoapBody getSoapBody(Class parent) throws ToolException {
         if (extReg == null) {
             extReg = wsdlFactory.newPopulatedExtensionRegistry();
         }
-        SOAPBody soapBody = null;
+        SoapBody soapBody = null;
         try {
-            soapBody = (SOAPBody)extReg.createExtension(parent, WSDLConstants.NS_SOAP_BODY);
+            soapBody = SOAPBindingUtil.createSoapBody(extReg, parent, isSOAP12());
         } catch (WSDLException wse) {
             Message msg = new Message("FAIL_TO_CREATE_SOAPBINDING", LOG);
             throw new ToolException(msg, wse);
@@ -305,9 +313,9 @@
         if (extReg == null) {
             extReg = wsdlFactory.newPopulatedExtensionRegistry();
         }
-        SOAPFault soapFault = null;
+        SoapFault  soapFault = null;
         try {
-            soapFault = (SOAPFault)extReg.createExtension(BindingFault.class, WSDLConstants.NS_SOAP_FAULT);
+            soapFault = SOAPBindingUtil.createSoapFault(extReg, isSOAP12());
         } catch (WSDLException wse) {
             Message msg = new Message("FAIL_TO_CREATE_SOAPBINDING", LOG);
             throw new ToolException(msg, wse);

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToXMLProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToXMLProcessor.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToXMLProcessor.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/WSDLToXMLProcessor.java Tue Oct 17 05:40:33 2006
@@ -273,7 +273,7 @@
             xmlHttpAddress = (XMLHttpAddress)extReg.createExtension(Port.class,
                                                                     WSDLConstants.NS_XMLHTTP_BINDING_ADDRESS);
         } catch (WSDLException wse) {
-            Message msg = new Message("FAIl_TO_CREATE_SOAPADDRESS", LOG);
+            Message msg = new Message("FAIL_TO_CREATE_SOAPADDRESS", LOG);
             throw new ToolException(msg);
         }
         if (env.get(ToolConstants.CFG_ADDRESS) != null) {

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/XSDToWSDLProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/XSDToWSDLProcessor.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/XSDToWSDLProcessor.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/processor/XSDToWSDLProcessor.java Tue Oct 17 05:40:33 2006
@@ -199,7 +199,7 @@
         try {
             writer = fw.getWriter("", newName);
         } catch (IOException ioe) {
-            Message msg = new Message("FAIl_TO_WRITE_FILE", LOG, env.get(ToolConstants.CFG_OUTPUTDIR)
+            Message msg = new Message("FAIL_TO_WRITE_FILE", LOG, env.get(ToolConstants.CFG_OUTPUTDIR)
                                     + System.getProperty("file.seperator") + newName);
             throw new ToolException(msg, ioe);
         }

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml Tue Oct 17 05:40:33 2006
@@ -86,6 +86,15 @@
 				    <annotation>address</annotation>
 				</associatedArgument>
 		</option>
+
+
+		<option id="soap12" maxOccurs="1">
+		    <annotation>
+			Specifies the SOAP version to SOAP 1.2
+		    </annotation>
+		    <switch>soap12</switch>
+		</option>
+
 	
 		<option id="destinationStyle" maxOccurs="1">
 		     	 <annotation>

Modified: incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2soap.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2soap.xml?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2soap.xml (original)
+++ incubator/cxf/trunk/tools/misctools/src/main/java/org/apache/cxf/tools/misc/wsdl2soap.xml Tue Oct 17 05:40:33 2006
@@ -52,6 +52,13 @@
 					<annotation>binding-name</annotation>
 				</associatedArgument>
 			</option>
+
+			<option id="soap12" maxOccurs="1">
+			    <annotation>
+				Specifies to generate SOAP 1.2 binding
+			    </annotation>
+			    <switch>soap12</switch>
+			</option>
 			
 			<option id="outputdir" maxOccurs="1">
                         <annotation>

Modified: incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java Tue Oct 17 05:40:33 2006
@@ -24,6 +24,7 @@
 
 import javax.wsdl.Service;
 import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap12.SOAP12Address;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.tools.common.ProcessorTestBase;
@@ -84,6 +85,49 @@
         } catch (ToolException e) {
             fail("Exception Encountered when parsing wsdl, error: " + e.getMessage());
         }
+    }
+
+    public void testNewServiceSoap12() throws Exception {
+        String[] args = new String[] {"-soap12", "-transport", "http", 
+                                      "-e", "SOAPService", "-p", "SoapPort", "-n",
+                                      "Greeter_SOAPBinding", "-a", 
+                                      "http://localhost:9000/SOAPService/SoapPort", "-d",
+                                      output.getCanonicalPath(),
+                                      getLocation("/misctools_wsdl/hello_world_soap12.wsdl")};
+        WSDLToService.main(args);
+
+        File outputFile = new File(output, "hello_world_soap12-service.wsdl");
+        assertTrue("New wsdl file is not generated", outputFile.exists());
+        WSDLToServiceProcessor processor = new WSDLToServiceProcessor();
+        processor.setEnvironment(env);
+        try {
+            processor.parseWSDL(outputFile.getAbsolutePath());
+            Service service = processor.getWSDLDefinition().getService(
+                                                                       new QName(processor
+                                                                           .getWSDLDefinition()
+                                                                           .getTargetNamespace(),
+                                                                                 "SOAPService"));
+            if (service == null) {
+                fail("Element wsdl:service serviceins Missed!");
+            }
+            Iterator it = service.getPort("SoapPort").getExtensibilityElements().iterator();
+            if (service == null) {
+                fail("Element wsdl:port portins Missed!");
+            }
+
+            while (it.hasNext()) {
+                Object obj = it.next();
+                if (obj instanceof SOAP12Address) {
+                    SOAP12Address soapAddress = (SOAP12Address)obj;
+                    assertNotNull(soapAddress.getLocationURI());
+                    assertEquals("http://localhost:9000/SOAPService/SoapPort", soapAddress.getLocationURI());
+                    break;
+                }
+            }
+        } catch (ToolException e) {
+            fail("Exception Encountered when parsing wsdl, error: " + e.getMessage());
+        }
+        
     }
 
     public void testDefaultLocation() throws Exception {

Modified: incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessorTest.java?view=diff&rev=464917&r1=464916&r2=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/misctools/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToSoapProcessorTest.java Tue Oct 17 05:40:33 2006
@@ -26,11 +26,18 @@
 import javax.wsdl.BindingFault;
 import javax.wsdl.BindingInput;
 import javax.wsdl.BindingOperation;
+import javax.wsdl.extensions.soap.SOAPBinding;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.wsdl.extensions.soap.SOAPOperation;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
+import javax.wsdl.extensions.soap12.SOAP12Body;
+import javax.wsdl.extensions.soap12.SOAP12Operation;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.tools.common.ProcessorTestBase;
 import org.apache.cxf.tools.common.ToolConstants;
 import org.apache.cxf.tools.common.ToolException;
+import org.apache.cxf.tools.common.WSDLConstants;
 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.SoapOperation;
@@ -190,6 +197,137 @@
         }
     }
 
+    public void testNewSoap12Binding() throws Exception {
+        String[] args = new String[] {"-i", "Greeter", 
+                                      "-soap12",                                      
+                                      "-b", "Greeter_SOAP12Binding",
+                                      "-d", output.getCanonicalPath(), 
+                                      "-o", "hello_world_soap12_newbinding.wsdl",
+                                      getLocation("/misctools_wsdl/hello_world_soap12_nobinding.wsdl")};
+        WSDLToSoap.main(args);
+
+        File outputFile = new File(output, "hello_world_soap12_newbinding.wsdl");
+        
+        assertTrue("New wsdl file is not generated", outputFile.exists());
+        assertTrue("Generated file is empty!", outputFile.length() > 0);
+        
+        WSDLToSoapProcessor processor = new WSDLToSoapProcessor();
+        processor.setEnvironment(env);
+        try {
+            processor.parseWSDL(outputFile.getAbsolutePath());
+            Binding binding = processor.getWSDLDefinition()
+                .getBinding(
+                            new QName(processor.getWSDLDefinition().getTargetNamespace(),
+                                      "Greeter_SOAP12Binding"));
+            if (binding == null) {
+                fail("Element wsdl:binding Greeter_SOAPBinding_NewBinding Missed!");
+            }
+            Iterator it = binding.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();                
+                assertTrue(SOAPBindingUtil.isSOAPBinding(obj));
+                assertTrue(obj instanceof SOAP12Binding);
+                SoapBinding soapBinding = SOAPBindingUtil.getSoapBinding(obj);
+                assertNotNull(soapBinding);
+                assertTrue("document".equalsIgnoreCase(soapBinding.getStyle()));
+                assertTrue(WSDLConstants.SOAP12_HTTP_TRANSPORT.
+                           equalsIgnoreCase(soapBinding.getTransportURI()));
+            }
+            
+            BindingOperation bo = binding.getBindingOperation("sayHi", null, null);
+            if (bo == null) {
+                fail("Element <wsdl:operation name=\"sayHi\"> Missed!");
+            }
+            it = bo.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPOperation(obj));
+                assertTrue(obj instanceof SOAP12Operation);
+                SoapOperation soapOperation = SOAPBindingUtil.getSoapOperation(obj);
+                assertNotNull(soapOperation);
+                assertTrue("document".equalsIgnoreCase(soapOperation.getStyle()));
+            }
+            BindingInput bi = bo.getBindingInput();
+            it = bi.getExtensibilityElements().iterator();
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPBody(obj));
+                assertTrue(obj instanceof SOAP12Body);
+                SoapBody soapBody = SOAPBindingUtil.getSoapBody(obj);
+                assertNotNull(soapBody);
+                assertTrue("literal".equalsIgnoreCase(soapBody.getUse()));
+            }
+        } catch (ToolException e) {
+            fail("Exception Encountered when parsing wsdl, error: " + e.getMessage());
+        }
+    }    
+    
+    public void testAddSoap12Binding() throws Exception {
+        String[] args = new String[] {"-i", "Greeter", 
+                                      "-soap12",
+                                      "-b", "Greeter_SOAP12Binding",
+                                      "-d", output.getCanonicalPath(), 
+                                      "-o", "hello_world_soap12_newbinding.wsdl",
+                                      getLocation("/misctools_wsdl/hello_world_soap12.wsdl")};
+        WSDLToSoap.main(args);
+
+        File outputFile = new File(output, "hello_world_soap12_newbinding.wsdl");
+        assertTrue("New wsdl file is not generated", outputFile.exists());
+        
+        WSDLToSoapProcessor processor = new WSDLToSoapProcessor();
+        processor.setEnvironment(env);
+        try {
+            processor.parseWSDL(outputFile.getAbsolutePath());
+            Binding binding = processor.getWSDLDefinition()
+                .getBinding(
+                            new QName(processor.getWSDLDefinition().getTargetNamespace(),
+                                      "Greeter_SOAP12Binding"));
+            if (binding == null) {
+                fail("Element wsdl:binding Greeter_SOAPBinding_NewBinding Missed!");
+            }
+            Iterator it = binding.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();                
+                assertTrue(SOAPBindingUtil.isSOAPBinding(obj));
+                assertTrue(obj instanceof SOAP12Binding);
+                SoapBinding soapBinding = SOAPBindingUtil.getSoapBinding(obj);
+                assertNotNull(soapBinding);
+                assertTrue("document".equalsIgnoreCase(soapBinding.getStyle()));
+    
+            }
+            
+            BindingOperation bo = binding.getBindingOperation("sayHi", null, null);
+            if (bo == null) {
+                fail("Element <wsdl:operation name=\"sayHi\"> Missed!");
+            }
+            it = bo.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPOperation(obj));
+                assertTrue(obj instanceof SOAP12Operation);
+                SoapOperation soapOperation = SOAPBindingUtil.getSoapOperation(obj);
+                assertNotNull(soapOperation);
+                assertTrue("document".equalsIgnoreCase(soapOperation.getStyle()));
+            }
+            BindingInput bi = bo.getBindingInput();
+            it = bi.getExtensibilityElements().iterator();
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPBody(obj));
+                assertTrue(obj instanceof SOAP12Body);
+                SoapBody soapBody = SOAPBindingUtil.getSoapBody(obj);
+                assertNotNull(soapBody);
+                assertTrue("literal".equalsIgnoreCase(soapBody.getUse()));
+            }
+        } catch (ToolException e) {
+            fail("Exception Encountered when parsing wsdl, error: " + e.getMessage());
+        }
+    }    
+
     public void testPartValidation() throws Exception {
         WSDLToSoapProcessor processor = new WSDLToSoapProcessor();
         env.put(ToolConstants.CFG_PORTTYPE, "Greeter");
@@ -210,6 +348,70 @@
                      + "catch other unexpected exception: " + e.getMessage());
             }
         }
+    }
+
+    public void testWithoutBinding() throws Exception {
+        String[] args = new String[] {"-i", "Greeter",                                    
+                                      "-b", "Greeter_SOAPBinding",
+                                      "-d", output.getCanonicalPath(), 
+                                      "-o", "hello_world_soap_newbinding.wsdl",
+                                      getLocation("/misctools_wsdl/hello_world_nobinding.wsdl")};
+        WSDLToSoap.main(args);
+        
+        File outputFile = new File(output, "hello_world_soap_newbinding.wsdl");
+        
+        assertTrue("New wsdl file is not generated", outputFile.exists());
+        assertTrue("Generated file is empty!", outputFile.length() > 0);
+        
+        WSDLToSoapProcessor processor = new WSDLToSoapProcessor();
+        processor.setEnvironment(env);
+        try {
+            processor.parseWSDL(outputFile.getAbsolutePath());
+            Binding binding = processor.getWSDLDefinition()
+                .getBinding(new QName(processor.getWSDLDefinition().getTargetNamespace(), 
+                                      "Greeter_SOAPBinding"));
+            if (binding == null) {
+                fail("Element wsdl:binding Greeter_SOAPBinding_NewBinding Missed!");
+            }
+            Iterator it = binding.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();                
+                assertTrue(SOAPBindingUtil.isSOAPBinding(obj));
+                assertTrue(obj instanceof SOAPBinding);
+                SoapBinding soapBinding = SOAPBindingUtil.getSoapBinding(obj);
+                assertNotNull(soapBinding);
+                assertTrue("document".equalsIgnoreCase(soapBinding.getStyle()));
+                assertTrue(WSDLConstants.SOAP_HTTP_TRANSPORT.equalsIgnoreCase(soapBinding.getTransportURI()));
+            }
+            
+            BindingOperation bo = binding.getBindingOperation("sayHi", null, null);
+            if (bo == null) {
+                fail("Element <wsdl:operation name=\"sayHi\"> Missed!");
+            }
+            it = bo.getExtensibilityElements().iterator();
+
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPOperation(obj));
+                assertTrue(obj instanceof SOAPOperation);
+                SoapOperation soapOperation = SOAPBindingUtil.getSoapOperation(obj);
+                assertNotNull(soapOperation);
+                assertTrue("document".equalsIgnoreCase(soapOperation.getStyle()));
+            }
+            BindingInput bi = bo.getBindingInput();
+            it = bi.getExtensibilityElements().iterator();
+            while (it.hasNext()) {
+                Object obj = it.next();
+                assertTrue(SOAPBindingUtil.isSOAPBody(obj));
+                assertTrue(obj instanceof SOAPBody);
+                SoapBody soapBody = SOAPBindingUtil.getSoapBody(obj);
+                assertNotNull(soapBody);
+                assertTrue("literal".equalsIgnoreCase(soapBody.getUse()));
+            }
+        } catch (ToolException e) {
+            fail("Exception Encountered when parsing wsdl, error: " + e.getMessage());
+        }        
     }
 
     public void testBindingExist() throws Exception {

Added: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl?view=auto&rev=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl (added)
+++ incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl Tue Oct 17 05:40:33 2006
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+		  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+		  xmlns:tns="http://apache.org/hello_world_soap_http"
+		  xmlns:x1="http://apache.org/hello_world_soap_http/types"
+		  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+		  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		  targetNamespace="http://apache.org/hello_world_soap_http" name="HelloWorld">
+    <wsdl:types>
+	<schema targetNamespace="http://apache.org/hello_world_soap_http/types" 
+		xmlns="http://www.w3.org/2001/XMLSchema" 
+		xmlns:x1="http://apache.org/hello_world_soap_http/types" 
+		elementFormDefault="qualified">
+	    <element name="sayHi">
+		<complexType/>
+	    </element>
+	    <element name="sayHiResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="greetMe">
+		<complexType>
+		    <sequence>
+			<element name="requestType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="greetMeResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="greetMeSometime">
+		<complexType>
+		    <sequence>
+			<element name="requestType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="greetMeSometimeResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="greetMeOneWay">
+		<complexType>
+		    <sequence>
+			<element name="requestType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="testDocLitFault">
+		<complexType>
+		    <sequence>
+			<element name="faultType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="testDocLitFaultResponse">
+		<complexType>
+		    <sequence/>
+		</complexType>
+	    </element>
+	    <complexType name="ErrorCode">
+		<sequence>
+		    <element name="minor" type="short"/>
+		    <element name="major" type="short"/>
+		</sequence>
+	    </complexType>
+	    <element name="NoSuchCodeLit">
+		<complexType>
+		    <sequence>
+			<element name="code" type="x1:ErrorCode"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	    <element name="BadRecordLit" type="string"/>
+	    <complexType name="BadRecord">
+		<sequence>
+		    <element name="reason" type="string"/>
+		    <element name="code" type="short"/>
+		</sequence>
+	    </complexType>
+	    <complexType name="addNumbers">
+		<sequence>
+		    <element name="arg0" type="int"/>
+		    <element name="arg1" type="int"/>
+		</sequence>
+	    </complexType>
+	    <element name="addNumbers" type="x1:addNumbers"/>
+	    <complexType name="addNumbersResponse">
+		<sequence>
+		    <element name="return" type="int"/>
+		</sequence>
+	    </complexType>
+	    <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+	    <element name="BareDocument" type="string"/>
+	    <element name="BareDocumentResponse">
+		<complexType>
+		    <sequence>
+			<element name="company" type="string"/>
+		    </sequence>
+		    <attribute name="id" type="int"/>
+		</complexType>
+	    </element>      
+	</schema>
+    </wsdl:types>
+    <wsdl:message name="sayHiRequest">
+	<wsdl:part name="in" element="x1:sayHi"/>
+    </wsdl:message>
+    <wsdl:message name="sayHiResponse">
+	<wsdl:part name="out" element="x1:sayHiResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeRequest">
+	<wsdl:part name="in" element="x1:greetMe"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeResponse">
+	<wsdl:part name="out" element="x1:greetMeResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeSometimeRequest">
+	<wsdl:part name="in" element="x1:greetMeSometime"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeSometimeResponse">
+	<wsdl:part name="out" element="x1:greetMeSometimeResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeOneWayRequest">
+	<wsdl:part name="in" element="x1:greetMeOneWay"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitFaultRequest">
+	<wsdl:part name="in" element="x1:testDocLitFault"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitFaultResponse">
+	<wsdl:part name="out" element="x1:testDocLitFaultResponse"/>
+    </wsdl:message>
+    <wsdl:message name="NoSuchCodeLitFault">
+	<wsdl:part name="NoSuchCodeLit" element="x1:NoSuchCodeLit"/>
+    </wsdl:message>
+    <wsdl:message name="BadRecordLitFault">
+	<wsdl:part name="BadRecordLit" element="x1:BadRecordLit"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitBareRequest">
+	<wsdl:part name="in" element="x1:BareDocument"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitBareResponse">
+	<wsdl:part name="out" element="x1:BareDocumentResponse"/>
+    </wsdl:message> 
+    <wsdl:portType name="Greeter">
+	<wsdl:operation name="sayHi">
+	    <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+	    <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+	</wsdl:operation>
+	<wsdl:operation name="greetMe">
+	    <wsdl:input name="greetMeRequest" message="tns:greetMeRequest"/>
+	    <wsdl:output name="greetMeResponse" message="tns:greetMeResponse"/>
+	</wsdl:operation>
+	<wsdl:operation name="greetMeSometime">
+	    <wsdl:input name="greetMeSometimeRequest" message="tns:greetMeSometimeRequest"/>
+	    <wsdl:output name="greetMeSometimeResponse" message="tns:greetMeSometimeResponse"/>
+	</wsdl:operation>
+	<wsdl:operation name="greetMeOneWay">
+	    <wsdl:input name="greetMeOneWayRequest" message="tns:greetMeOneWayRequest"/>
+	</wsdl:operation>
+	<wsdl:operation name="testDocLitFault">
+	    <wsdl:input name="testDocLitFaultRequest" message="tns:testDocLitFaultRequest"/>
+	    <wsdl:output name="testDocLitFaultResponse" message="tns:testDocLitFaultResponse"/>
+	    <wsdl:fault name="NoSuchCodeLitFault" message="tns:NoSuchCodeLitFault"/>
+	    <wsdl:fault name="BadRecordLitFault" message="tns:BadRecordLitFault"/>
+	</wsdl:operation>
+	<wsdl:operation name="testDocLitBare">
+	    <wsdl:input name="testDocLitBareRequest" message="tns:testDocLitBareRequest"/>
+	    <wsdl:output name="testDocLitBareResponse" message="tns:testDocLitBareResponse"/>
+	</wsdl:operation>       
+    </wsdl:portType>
+</wsdl:definitions>
+

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_nobinding.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl?view=auto&rev=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl (added)
+++ incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl Tue Oct 17 05:40:33 2006
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+
+<definitions name="HelloWorld"
+	     xmlns="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:tns="http://apache.org/hello_world_soap12_http"
+	     xmlns:x1="http://apache.org/hello_world_soap12_http/types"
+	     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	     targetNamespace="http://apache.org/hello_world_soap12_http"
+	     xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
+    <wsdl:types>
+	<schema targetNamespace="http://apache.org/hello_world_soap12_http/types" 
+		xmlns="http://www.w3.org/2001/XMLSchema" 
+		xmlns:x1="http://apache.org/hello_world_soap12_http/types" 
+		elementFormDefault="qualified">
+	    <element name="sayHi">
+		<complexType/>
+	    </element>
+	    <element name="sayHiResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+        </schema>
+    </wsdl:types>
+
+    <wsdl:message name="sayHiRequest">
+        <wsdl:part name="in" element="x1:sayHi"/>
+    </wsdl:message>
+    <wsdl:message name="sayHiResponse">
+        <wsdl:part name="out" element="x1:sayHiResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="Greeter">
+        <wsdl:operation name="sayHi">
+            <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+            <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+        </wsdl:operation>
+    </wsdl:portType>
+
+    <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
+	<soap12:binding transport="http://www.w3.org/2003/05/soap/bindings/HTTP/" style="document" />
+	<operation name="sayHi">
+	    <soap12:operation style="document" soapAction=""/>
+	    <input>
+		<soap12:body use="literal" />
+	    </input>
+	    <output>
+		<soap12:body use="literal" />
+	    </output>
+	</operation>
+    </wsdl:binding>
+
+
+</definitions>

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12_nobinding.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12_nobinding.wsdl?view=auto&rev=464917
==============================================================================
--- incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12_nobinding.wsdl (added)
+++ incubator/cxf/trunk/tools/misctools/src/test/resources/misctools_wsdl/hello_world_soap12_nobinding.wsdl Tue Oct 17 05:40:33 2006
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<definitions name="HelloWorld"
+	     xmlns="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:tns="http://apache.org/hello_world_soap12_http"
+	     xmlns:x1="http://apache.org/hello_world_soap12_http/types"
+	     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	     targetNamespace="http://apache.org/hello_world_soap12_http"
+	     >
+    <wsdl:types>
+	<schema targetNamespace="http://apache.org/hello_world_soap12_http/types" 
+		xmlns="http://www.w3.org/2001/XMLSchema" 
+		xmlns:x1="http://apache.org/hello_world_soap12_http/types" 
+		elementFormDefault="qualified">
+	    <element name="sayHi">
+		<complexType/>
+	    </element>
+	    <element name="sayHiResponse">
+		<complexType>
+		    <sequence>
+			<element name="responseType" type="string"/>
+		    </sequence>
+		</complexType>
+	    </element>
+	</schema>
+    </wsdl:types>
+
+    <wsdl:message name="sayHiRequest">
+	<wsdl:part name="in" element="x1:sayHi"/>
+    </wsdl:message>
+    <wsdl:message name="sayHiResponse">
+	<wsdl:part name="out" element="x1:sayHiResponse"/>
+    </wsdl:message>
+
+    <wsdl:portType name="Greeter">
+	<wsdl:operation name="sayHi">
+	    <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+	    <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+	</wsdl:operation>
+    </wsdl:portType>
+
+</definitions>