dims        2002/12/20 08:51:24

  Modified:    java/src/org/apache/axis/wsdl/fromJava Emitter.java
                        Namespaces.java Types.java
  Log:
  Fix for Bug 15058 - WSDL Emitter does not output xml namespace declarations for 
mappings used only in extraclasses.
  
  Revision  Changes    Path
  1.81      +10 -7     xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
  
  Index: Emitter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java,v
  retrieving revision 1.80
  retrieving revision 1.81
  diff -u -r1.80 -r1.81
  --- Emitter.java      17 Dec 2002 20:45:19 -0000      1.80
  +++ Emitter.java      20 Dec 2002 16:51:24 -0000      1.81
  @@ -206,12 +206,13 @@
               filename2 = getServicePortName() + "_implementation.wsdl";
           }
   
  -        // Write out the interface def
  -        Document doc = WSDLFactory.newInstance().
  -            newWSDLWriter().getDocument(intf);
           for (int i = 0; extraClasses != null && i < extraClasses.length; i++) {
               types.writeTypeForPart(extraClasses[i], null);
           }
  +        //types.updateNamespaces();
  +        // Write out the interface def
  +        Document doc = WSDLFactory.newInstance().
  +            newWSDLWriter().getDocument(intf);
           types.insertTypesFragment(doc);
           prettyDocumentToFile(doc, filename1);
   
  @@ -259,20 +260,22 @@
           switch (mode) {
               case MODE_ALL:
                   def = getWSDL();
  -                doc = WSDLFactory.newInstance().
  -                    newWSDLWriter().getDocument(def);
                   for (int i = 0; extraClasses != null && i < extraClasses.length; 
i++) {
                       types.writeTypeForPart(extraClasses[i], null);
                   }
  +                //types.updateNamespaces();
  +                doc = WSDLFactory.newInstance().
  +                    newWSDLWriter().getDocument(def);
                   types.insertTypesFragment(doc);
                   break;
               case MODE_INTERFACE:
                   def = getIntfWSDL();
  -                doc = WSDLFactory.newInstance().
  -                    newWSDLWriter().getDocument(def);
                   for (int i = 0; extraClasses != null && i < extraClasses.length; 
i++) {
                       types.writeTypeForPart(extraClasses[i], null);
                   }
  +                //types.updateNamespaces();
  +                doc = WSDLFactory.newInstance().
  +                    newWSDLWriter().getDocument(def);
                   types.insertTypesFragment(doc);
                   break;
               case MODE_IMPLEMENTATION:
  
  
  
  1.7       +8 -0      xml-axis/java/src/org/apache/axis/wsdl/fromJava/Namespaces.java
  
  Index: Namespaces.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Namespaces.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Namespaces.java   4 Nov 2002 17:01:28 -0000       1.6
  +++ Namespaces.java   20 Dec 2002 16:51:24 -0000      1.7
  @@ -219,4 +219,12 @@
           }
           return protocol + "://" + sb.toString();
       }
  +    
  +    /**
  +     * Get the list of namespaces currently registered
  +     * @return iterator
  +     */ 
  +    public Iterator getNamespaces() {
  +        return namespacePrefixMap.keySet().iterator();            
  +    }
   }
  
  
  
  1.68      +14 -1     xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
  
  Index: Types.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- Types.java        11 Dec 2002 22:38:28 -0000      1.67
  +++ Types.java        20 Dec 2002 16:51:24 -0000      1.68
  @@ -95,6 +95,7 @@
   import java.util.HashMap;
   import java.util.List;
   import java.util.Vector;
  +import java.util.Iterator;
   
   /**
    *
  @@ -1054,12 +1055,24 @@
           }
       }
   
  +    public void updateNamespaces() {
  +        Namespaces namespaces = getNamespaces();
  +        Iterator nspIterator = namespaces.getNamespaces();
  +        while(nspIterator.hasNext()) {
  +            String nsp = (String) nspIterator.next();
  +            String pref = def.getPrefix(nsp);
  +            if (pref == null) {
  +                def.addNamespace(namespaces.getCreatePrefix(nsp), nsp);
  +            }                
  +        }
  +    }
  +    
       /**
        * Inserts the type fragment into the given wsdl document
        * @param doc
        */
       public void insertTypesFragment(Document doc) {
  -
  +        updateNamespaces();
           if (wsdlTypesElem != null) {
               // Import the wsdlTypesElement into the doc.
               org.w3c.dom.Node node = doc.importNode(wsdlTypesElem, true);
  
  
  


Reply via email to