I used the Object model found in wsdl2java for giving the ?wsdl generation. Basically I extracted information from the service.aar and filled the javax.wsdl.* objects. But since you have completed the WOM writer stuff, Can I directly populate WOM stuff for ?wsdl generation ?

-- Chinthaka
[EMAIL PROTECTED] wrote:

Author: ajith
Date: Sat Oct  8 22:18:15 2005
New Revision: 307368

URL: http://svn.apache.org/viewcvs?rev=307368&view=rev
Log:
Completed the WOMWriter. However a thorough test case is missing and it's not 
justifiable to mark this as complete.

Modified:
   
webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java

Modified: 
webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
URL: 
http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java?rev=307368&r1=307367&r2=307368&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
 Sat Oct  8 22:18:15 2005
@@ -3,8 +3,7 @@
import org.apache.axis2.wsdl.WSDLVersionWrapper;

import org.apache.wsdl.*;
-import org.apache.wsdl.extensions.Schema;
-import org.apache.wsdl.extensions.SOAPAddress;
+import org.apache.wsdl.extensions.*;

import javax.wsdl.xml.WSDLWriter;
import javax.wsdl.factory.WSDLFactory;
@@ -37,6 +36,7 @@
    private String defaultWSDLPrefix="wsdl11";
    private String targetNamespacePrefix="tns";
    private static final String WSDL1_1_NAMESPACE_URI = 
"http://schemas.xmlsoap.org/wsdl/";;
+    private static final String WSDL1_1_SOAP_NAMESPACE_URI = 
"http://schemas.xmlsoap.org/wsdl/soap/";;
    private static final String DEFINITION_NAME = "definitions";
    private static final String IMPORT_NAME = "import";
    private static final String TYPES_NAME = "types";
@@ -48,6 +48,15 @@
    //this is our 'symbol table' for the time being. It's a simple
    //Qname <-> message object map
    private Map messageMap = new HashMap();
+    private static final String BINDING_OPERATION = "operation";
+    private static final String OPERATION_NAME = BINDING_OPERATION;
+    private static final String BINDING_INPUT = "input";
+    private static final String INPUT_NAME = BINDING_INPUT;
+    private static final String BINDING_OUTPUT = "output";
+    private static final String OUTPUT_NAME = BINDING_OUTPUT;
+    private static final String BINDING_NAME = "binding";
+
+    private String soapNsPrefix = null;


    public void setEncoding(String encoding) {
@@ -90,6 +99,8 @@
            //create a writer from the stream
            Writer writer = new OutputStreamWriter(out,encoding);
            writeStartDescripton(wsdlDescription,writer);
+            //find the SOAPNs
+            findSOAPNsPrefix(wsdlDescription);
            //write the imports
            writeImports(wsdlDescription,writer);
            //write  the types
@@ -101,7 +112,7 @@
            //write the binding
            writeBinding(wsdlDescription,writer);
            //write the service
-            //write
+            writeService(wsdlDescription,writer);
            //close definition
            writeEndDescripton(writer);
            writer.flush();
@@ -116,6 +127,70 @@

    /**
     *
+     * @param wsdlDescription
+     * @param writer
+     * @throws IOException
+     */
+    private void writeService(WSDLDescription wsdlDescription, Writer writer) 
throws IOException{
+        Map serviceMap = wsdlDescription.getServices();
+        if (serviceMap!=null && !serviceMap.isEmpty()){
+            Iterator serviceIterator = serviceMap.values().iterator();
+            WSDLService service;
+            while (serviceIterator.hasNext()) {
+                service =  (WSDLService)serviceIterator.next();
+                
WriterUtil.writeStartElement("service",defaultWSDLPrefix,writer);
+                
WriterUtil.writeAttribute("name",service.getName().getLocalPart(),writer);
+                WriterUtil.writeCloseStartElement(writer);
+                //wrtie the porttypes
+                Map endPointMap = service.getEndpoints();
+                if (endPointMap!=null && !endPointMap.isEmpty()){
+                    Iterator it = endPointMap.values().iterator();
+                    while (it.hasNext()) {
+                        writePorttype((WSDLEndpoint)it.next(),writer);
+                    }
+                }
+                WriterUtil.writeEndElement("service",defaultWSDLPrefix,writer);
+            }
+        }
+    }
+
+    /**
+     *
+     * @param endpoint
+     * @param outWriter
+     */
+    private void writePorttype(WSDLEndpoint endpoint,Writer outWriter) throws 
IOException{
+        WriterUtil.writeStartElement("port",defaultWSDLPrefix,outWriter);
+        
WriterUtil.writeAttribute("name",endpoint.getName().getLocalPart(),outWriter);
+        QName name = endpoint.getBinding().getName();
+        
WriterUtil.writeAttribute("binding",name.getPrefix()+":"+name.getLocalPart(),outWriter);
+        WriterUtil.writeCloseStartElement(outWriter);
+
+        
handleExtensibiltyElements(endpoint.getExtensibilityElements(),outWriter);
+
+        WriterUtil.writeEndElement("port",outWriter);
+    }
+    /**
+     * Find the SOAPns prefix
+     * @param wsdlDescription
+     */
+    private void findSOAPNsPrefix(WSDLDescription wsdlDescription) {
+        Map map = wsdlDescription.getNamespaces();
+        Iterator nsIterator = map.values().iterator();
+        Iterator keyIterator = map.keySet().iterator();
+        String key;
+        while (nsIterator.hasNext()) {
+            key =  keyIterator.next().toString();
+            if (WSDL1_1_SOAP_NAMESPACE_URI.equals(nsIterator.next())){
+                this.soapNsPrefix = key;
+                break;
+            }
+        }
+
+    }
+
+    /**
+     *
     * @param desc
     * @param outWriter
     * @throws WriterException
@@ -315,7 +390,7 @@
        if (types!=null){
            
WriterUtil.writeStartElement(TYPES_NAME,defaultWSDLPrefix,outWriter);
            WriterUtil.writeCloseStartElement(outWriter);
-            
handlerExtensibiltyElements(types.getExtensibilityElements(),outWriter);
+            
handleExtensibiltyElements(types.getExtensibilityElements(),outWriter);
            WriterUtil.writeEndElement(TYPES_NAME,defaultWSDLPrefix,outWriter);
        }
    }
@@ -361,7 +436,7 @@
            WSDLOperation operation;
            while (opIterator.hasNext()) {
                operation = (WSDLOperation)opIterator.next();
-                
WriterUtil.writeStartElement("operation",defaultWSDLPrefix,outWriter);
+                
WriterUtil.writeStartElement(OPERATION_NAME,defaultWSDLPrefix,outWriter);
                
WriterUtil.writeAttribute("name",operation.getName()==null?"":operation.getName().getLocalPart(),outWriter);
                WriterUtil.writeCloseStartElement(outWriter);

@@ -370,7 +445,7 @@
                MessageReference inputMessage = operation.getInputMessage();
                if (inputMessage!=null){
                    message  =(WSDL11Message) 
messageMap.get(inputMessage.getElement());
-                    
WriterUtil.writeStartElement("input",defaultWSDLPrefix,outWriter);
+                    
WriterUtil.writeStartElement(INPUT_NAME,defaultWSDLPrefix,outWriter);
                    
WriterUtil.writeAttribute("message",targetNamespacePrefix+":"+message.getMessageName(),outWriter);
                    WriterUtil.writeCompactEndElement(outWriter);
                }
@@ -379,14 +454,14 @@
                MessageReference outputMessage = operation.getOutputMessage();
                if (outputMessage!=null) {
                    message  =(WSDL11Message) 
messageMap.get(outputMessage.getElement());
-                    
WriterUtil.writeStartElement("output",defaultWSDLPrefix,outWriter);
+                    
WriterUtil.writeStartElement(OUTPUT_NAME,defaultWSDLPrefix,outWriter);
                    
WriterUtil.writeAttribute("message",targetNamespacePrefix+":"+message.getMessageName(),outWriter);
                    WriterUtil.writeCompactEndElement(outWriter);
                }

                //todo handle the faults here

-                
WriterUtil.writeEndElement("operation",defaultWSDLPrefix,outWriter);
+                
WriterUtil.writeEndElement(OPERATION_NAME,defaultWSDLPrefix,outWriter);

            }
        }
@@ -407,12 +482,25 @@
            WSDLBinding binding;
            while (iterator.hasNext()) {
                binding =  (WSDLBinding)iterator.next();
-                WriterUtil.writeStartElement("binding", 
defaultWSDLPrefix,outWriter);
+                WriterUtil.writeStartElement(BINDING_NAME, 
defaultWSDLPrefix,outWriter);
                
WriterUtil.writeAttribute("name",binding.getName().getLocalPart(),outWriter);
                WriterUtil.writeAttribute("type",targetNamespacePrefix +":"+ 
binding.getBoundInterface().getName().getLocalPart(),outWriter);
                WriterUtil.writeCloseStartElement(outWriter);
+                //write the extensibility elements
+                
handleExtensibiltyElements(binding.getExtensibilityElements(),outWriter);
+                //write the operations

-                WriterUtil.writeEndElement("binding", 
defaultWSDLPrefix,outWriter);
+                Map bindingOps = binding.getBindingOperations();
+                if (bindingOps!=null && !bindingOps.isEmpty()){
+                    Iterator bindingOpsIterator = 
bindingOps.values().iterator();
+                    while (bindingOpsIterator.hasNext()) {
+                        
writebindingOperation((WSDLBindingOperation)bindingOpsIterator.next(),outWriter);
+                    }
+                }
+
+
+
+                WriterUtil.writeEndElement(BINDING_NAME, 
defaultWSDLPrefix,outWriter);


            }
@@ -420,24 +508,96 @@

    }

-    protected void handlerExtensibiltyElements(List extElementList,Writer 
outWriter) throws IOException{
+
+    protected void writebindingOperation(WSDLBindingOperation bindingOp,Writer 
outWriter) throws IOException{
+        
WriterUtil.writeStartElement(BINDING_OPERATION,defaultWSDLPrefix,outWriter);
+        
WriterUtil.writeAttribute("name",bindingOp.getName().getLocalPart(),outWriter);
+        WriterUtil.writeCloseStartElement(outWriter);
+        
handleExtensibiltyElements(bindingOp.getExtensibilityElements(),outWriter);
+        //write the input
+        WSDLBindingMessageReference input = bindingOp.getInput();
+        if (input!=null){
+            
WriterUtil.writeStartElement(BINDING_INPUT,defaultWSDLPrefix,outWriter);
+            WriterUtil.writeCompactEndElement(outWriter);
+            
handleExtensibiltyElements(input.getExtensibilityElements(),outWriter);
+            
WriterUtil.writeEndElement(BINDING_INPUT,defaultWSDLPrefix,outWriter);
+        }
+
+        WSDLBindingMessageReference output = bindingOp.getInput();
+        if (input!=null){
+            
WriterUtil.writeStartElement(BINDING_OUTPUT,defaultWSDLPrefix,outWriter);
+            WriterUtil.writeCompactEndElement(outWriter);
+            
handleExtensibiltyElements(output.getExtensibilityElements(),outWriter);
+            
WriterUtil.writeEndElement(BINDING_OUTPUT,defaultWSDLPrefix,outWriter);
+        }
+        
WriterUtil.writeEndElement(BINDING_OPERATION,defaultWSDLPrefix,outWriter);
+    }
+
+    protected void handleExtensibiltyElements(List extElementList,Writer 
outWriter) throws IOException{
        int extensibilityElementCount = extElementList.size();
        for (int i = 0; i < extensibilityElementCount; i++) {
            
writeExtensibiltyElement((WSDLExtensibilityElement)extElementList.get(i),outWriter);
        }

    }
+
+    /**
+     *
+     * @param extElement
+     * @param outWriter
+     * @throws IOException
+     */
    protected void writeExtensibiltyElement(WSDLExtensibilityElement 
extElement,Writer outWriter) throws IOException{
        if (extElement instanceof Schema){
            outWriter.write(((Schema)extElement).getElement().toString());
        }else if(extElement instanceof SOAPAddress ){
-            //todo fill this
-        } else{
+            
writeSOAPAddressExtensibilityElement((SOAPAddress)extElement,outWriter);
+        }else if(extElement instanceof SOAPBinding ){
+            
writeSOAPBindingExtensibilityElement((SOAPBinding)extElement,outWriter);
+        }else if(extElement instanceof SOAPHeader ){
+            
writeSOAPHeaderExtensibilityElement((SOAPHeader)extElement,outWriter);
+        } else if(extElement instanceof SOAPOperation ){
+            
writeSOAPOpextensibilityElement((SOAPOperation)extElement,outWriter);
+        }else if(extElement instanceof SOAPBody ){
+            writeSOAPBodyExtensibilityElement((SOAPBody)extElement,outWriter);
+        }else{
            WriterUtil.writeComment(" Unknown extensibility element" + 
extElement.toString(),outWriter);
        }

+    }
+
+    private void writeSOAPAddressExtensibilityElement(SOAPAddress 
address,Writer outWriter) throws IOException{
+         WriterUtil.writeStartElement("address",this.soapNsPrefix,outWriter);
+        
WriterUtil.writeAttribute("location",address.getLocationURI(),outWriter);
+      //  WriterUtil.writeAttribute("style",soapBinding.getStyle(),outWriter);
+        WriterUtil.writeCompactEndElement(outWriter);
+    }
+
+    protected void writeSOAPBindingExtensibilityElement(SOAPBinding 
soapBinding,Writer outWriter)throws IOException{
+        WriterUtil.writeStartElement("binding",this.soapNsPrefix,outWriter);
+        
WriterUtil.writeAttribute("transport",soapBinding.getTransportURI(),outWriter);
+        WriterUtil.writeAttribute("style",soapBinding.getStyle(),outWriter);
+        WriterUtil.writeCompactEndElement(outWriter);
+    }
+
+    protected void writeSOAPBodyExtensibilityElement(SOAPBody soapBody,Writer 
outWriter)throws IOException{
+        WriterUtil.writeStartElement("body",this.soapNsPrefix,outWriter);
+        WriterUtil.writeAttribute("use",soapBody.getUse(),outWriter);
+        WriterUtil.writeCompactEndElement(outWriter);
+    }
+
+    protected void writeSOAPHeaderExtensibilityElement(SOAPHeader 
soapHeader,Writer outWriter)throws IOException{
+        WriterUtil.writeStartElement("header",this.soapNsPrefix,outWriter);
+        WriterUtil.writeAttribute("use",soapHeader.getUse(),outWriter);
+        WriterUtil.writeCompactEndElement(outWriter);
+    }


+    protected void writeSOAPOpextensibilityElement(SOAPOperation soapop,Writer 
outWriter)throws IOException{
+        
WriterUtil.writeStartElement(BINDING_OPERATION,this.soapNsPrefix,outWriter);
+        
WriterUtil.writeAttribute("name",soapop.getType().getLocalPart(),outWriter);
+        
WriterUtil.writeAttribute("soapaction",soapop.getSoapAction(),outWriter);
+        WriterUtil.writeCompactEndElement(outWriter);
    }

    /**





Reply via email to