Author: nash
Date: Wed Apr 13 10:32:15 2011
New Revision: 1091732

URL: http://svn.apache.org/viewvc?rev=1091732&view=rev
Log:
TUSCANY-3859: Update "no namespace" type references in xs:extension schema 
elements

Added:
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/BaseClass.java
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/ExtClass.java
Modified:
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java
    
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
    
tuscany/sca-java-1.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java

Added: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/BaseClass.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/BaseClass.java?rev=1091732&view=auto
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/BaseClass.java
 (added)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/BaseClass.java
 Wed Apr 13 10:32:15 2011
@@ -0,0 +1,46 @@
+/*
+ * 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.    
+ */
+
+package wsdlgen.verify;
+
+import java.io.Serializable;
+
+public class BaseClass implements Serializable {
+    private static final long serialVersionUID = -4086312879555658070L;
+
+    private long id;
+
+    private String commentair;
+    
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getCommentair() {
+        return commentair;
+    }
+
+    public void setCommentair(String commentair) {
+        this.commentair = commentair;
+    }
+}

Modified: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java?rev=1091732&r1=1091731&r2=1091732&view=diff
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
 (original)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
 Wed Apr 13 10:32:15 2011
@@ -50,6 +50,8 @@ public interface DataTypes {
 
     void testByteArray(byte[] byteArray);
 
+    void testBaseExtension(ExtClass ext);
+
     void testException() throws Exception;
 
     DataObject testDynamicSDO();

Added: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/ExtClass.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/ExtClass.java?rev=1091732&view=auto
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/ExtClass.java
 (added)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/ExtClass.java
 Wed Apr 13 10:32:15 2011
@@ -0,0 +1,34 @@
+/*
+ * 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.    
+ */
+
+package wsdlgen.verify;
+
+public class ExtClass extends BaseClass {
+    private static final long serialVersionUID = 7076974968473202208L;
+
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

Modified: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java?rev=1091732&r1=1091731&r2=1091732&view=diff
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
 (original)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
 Wed Apr 13 10:32:15 2011
@@ -23,8 +23,10 @@ import java.util.List;
 import javax.jws.WebParam;
 import javax.jws.soap.SOAPBinding;
 import commonj.sdo.DataObject;
+import wsdlgen.verify.BaseClass;
 import wsdlgen.verify.ComplexNumber;
 import wsdlgen.verify.DataTypes;
+import wsdlgen.verify.ExtClass;
 
 public class DataTypesImpl implements DataTypes {
 
@@ -62,6 +64,9 @@ public class DataTypesImpl implements Da
     public void testByteArray(byte[] byteArray) {
     }
 
+    public void testBaseExtension(ExtClass ext) {
+    }
+
     public void testException() throws Exception {
     }
 

Modified: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java?rev=1091732&r1=1091731&r2=1091732&view=diff
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java
 (original)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java
 Wed Apr 13 10:32:15 2011
@@ -199,6 +199,16 @@ public class BaseFramework {
         return (Element)childNodes.item(0);
     }
 
+    protected Element extensionElement(Element complexType) {
+        // find xs:complexContent child element
+        NodeList childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, 
"complexContent");
+        Element complexContent = (Element)childNodes.item(0);
+
+        // find first xs:extension child element
+        childNodes = complexContent.getElementsByTagNameNS(SCHEMA_NS, 
"extension");
+        return (Element)childNodes.item(0);
+    }
+
     private static void readWSDL(String serviceName) throws Exception {
         WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
         wsdlReader.setFeature("javax.wsdl.verbose",false);

Modified: 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java?rev=1091732&r1=1091731&r2=1091732&view=diff
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
 (original)
+++ 
tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
 Wed Apr 13 10:32:15 2011
@@ -107,6 +107,13 @@ public class DataTypesTestCase extends B
     }
 
     @Test
+    public void testBaseExtension() throws Exception {
+        String paramType = parameterType("testBaseExtension");
+        assertEquals("tns:extClass", paramType);
+        assertEquals("tns:baseClass", 
extensionElement(typeDefinition(paramType)).getAttribute("base"));
+    }
+
+    @Test
     public void testException() throws Exception {
         assertEquals("xs:string", faultType("testException", "Exception"));
     }

Modified: 
tuscany/sca-java-1.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java?rev=1091732&r1=1091731&r2=1091732&view=diff
==============================================================================
--- 
tuscany/sca-java-1.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
 (original)
+++ 
tuscany/sca-java-1.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
 Wed Apr 13 10:32:15 2011
@@ -728,41 +728,56 @@ public class Interface2WSDLGenerator {
                        _import.getParentNode().removeChild(_import);
                    }
        
-                   // look for any type attributes that refer to the 
-                   // node being merged
-                   NodeList elements = 
refSchema.getElementsByTagNameNS("http://www.w3.org/2001/XMLSchema","element";);
-                   for (int k = 0; k < elements.getLength(); k++){
-                       Element element = (Element) elements.item(k);
-                       if (element != null && element.getAttributes() != null) 
{
-                           Node type = 
element.getAttributes().getNamedItem("type");
-                           
-                           if (type != null &&
-                               type.getNodeValue().equals(typeName)){
-                               if 
(xsDef.getNamespace().equals(defaultNamespace)){
-                                   // double check that there is a "tns" 
namespace shortname specified
-                                   String tnsNamespace = 
refSchema.getDocumentElement().getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:tns");
-                                   
-                                   if (tnsNamespace == null || 
tnsNamespace.length() == 0) {
-                                       
refSchema.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:tns", defaultNamespace);
-                                   }
-                                   
-                                   // just add "tns" in front of the type name 
as
-                                   // we have merged the type into this schema
-                                   type.setNodeValue("tns:" + 
type.getNodeValue());
-                               } else {
-                                   // add a namespace 
-                                   
refSchema.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:__nnns", defaultNamespace);
-       
-                                   // prefix the type name with the namespace
-                                   type.setNodeValue("__nnns:" + 
type.getNodeValue());
-                               }
-                           }
-                       }
-                   }
+                   // TUSCANY-3859: Look for any attributes that refer to the 
node being merged
+                fixUpNoNamespaceAttributes("element", "type", xsDef, typeName, 
defaultNamespace);
+                fixUpNoNamespaceAttributes("extension", "base", xsDef, 
typeName, defaultNamespace);
                }
         }
     }
 
+    /**
+     * TUSCANY-3859 
+     * Correct any schema attributes that used to point to types in the no 
namespace schema
+     * 
+     * @param elementName
+     * @param attributeName
+     * @param xsDef
+     * @param defaultNamespace
+     */  
+    private void fixUpNoNamespaceAttributes(String elementName, String 
attributeName,
+                                            XSDefinition xsDef, String 
typeName, String defaultNamespace) {
+        Document refSchema = xsDef.getDocument();
+        NodeList elements = 
refSchema.getElementsByTagNameNS("http://www.w3.org/2001/XMLSchema";, 
elementName);
+        for (int k = 0; k < elements.getLength(); k++){
+            Element element = (Element) elements.item(k);
+            if (element != null && element.getAttributes() != null) {
+                Node type = 
element.getAttributes().getNamedItem(attributeName);
+                
+                if (type != null &&
+                    type.getNodeValue().equals(typeName)){
+                    if (xsDef.getNamespace().equals(defaultNamespace)){
+                        // double check that there is a "tns" namespace 
shortname specified
+                        String tnsNamespace = 
refSchema.getDocumentElement().getAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:tns");
+                        
+                        if (tnsNamespace == null || tnsNamespace.length() == 
0) {
+                            
refSchema.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:tns", defaultNamespace);
+                        }
+                        
+                        // just add "tns" in front of the type name as
+                        // we have merged the type into this schema
+                        type.setNodeValue("tns:" + type.getNodeValue());
+                    } else {
+                        // add a namespace 
+                        
refSchema.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/";, 
"xmlns:__nnns", defaultNamespace);
+    
+                        // prefix the type name with the namespace
+                        type.setNodeValue("__nnns:" + type.getNodeValue());
+                    }
+                }
+            }
+        }
+    }
+
     /*
      * Just used when debugging DOM problems
      */


Reply via email to