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);