You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/07/13 19:10:43 UTC

svn commit: r793628 - in /tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src: main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java

Author: rfeng
Date: Mon Jul 13 17:10:43 2009
New Revision: 793628

URL: http://svn.apache.org/viewvc?rev=793628&view=rev
Log:
Merge the fix for TUSCANY-3141 and xs:import fix from 2.x

Modified:
    tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
    tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java

Modified: tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java?rev=793628&r1=793627&r2=793628&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java Mon Jul 13 17:10:43 2009
@@ -439,17 +439,30 @@
         if (!"".equals(nsURI)) {
             imp.setAttribute("namespace", nsURI);
         }
-        NodeList childNodes = schema.getChildNodes();
+        // Scan all xs:import elements to match namespace
+        NodeList childNodes = schema.getElementsByTagNameNS(SCHEMA_NS, "import");
         for (int i = 0; i < childNodes.getLength(); i++) {
             Node childNode = childNodes.item(i);
             if (childNode instanceof Element) {
-                schema.insertBefore(imp, childNode);
-                imp = null;
-                break;
+                String ns = ((Element)childNode).getAttributeNS(SCHEMA_NS, "namespace");
+                if (nsURI.equals(ns)) {
+                    // The xs:import with the same namespace has been declared
+                    return;
+                }
             }
         }
-        if (imp != null) {
+        // Try to find the first node after the import elements
+        Node firstNodeAfterImport = null;
+        if (childNodes.getLength() > 0) {
+            firstNodeAfterImport = childNodes.item(childNodes.getLength() - 1).getNextSibling();
+        } else {
+            firstNodeAfterImport = schema.getFirstChild();
+        }
+
+        if (firstNodeAfterImport == null) {
             schema.appendChild(imp);
+        } else {
+            schema.insertBefore(imp, firstNodeAfterImport);
         }
     }
 
@@ -602,8 +615,8 @@
                 outputMsg.addPart(generateWrapperPart(definition, op, helpers, wrappers, false));
             } else {
                 DataType outputType = op.getOutputType();
-                outputMsg.addPart(generatePart(definition, outputType, "return"));
                 if (outputType != null) {
+                    outputMsg.addPart(generatePart(definition, outputType, "return"));
                     elements = new ArrayList<ElementInfo>();
                     ElementInfo element = getElementInfo(outputType.getPhysical(), outputType, null, helpers);
                     elements.add(element);

Modified: tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java?rev=793628&r1=793627&r2=793628&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java Mon Jul 13 17:10:43 2009
@@ -21,6 +21,8 @@
 
 import javax.jws.WebMethod;
 import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
 
 import org.osoa.sca.annotations.OneWay;
 import org.osoa.sca.annotations.Remotable;
@@ -54,4 +56,12 @@
 
     @WebMethod
     void m7(TestJavaClass info) throws TestFault;
+    
+    @WebMethod
+    @SOAPBinding(parameterStyle=ParameterStyle.BARE)
+    void m8(String str);
+    
+    @WebMethod
+    @SOAPBinding(parameterStyle=ParameterStyle.BARE)
+    int m9(String str);
 }