You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2008/06/05 21:18:18 UTC

svn commit: r663707 - in /incubator/tuscany/java/sca/modules: interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/ xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/ xsd/src/main/java/org/apache/tuscany/sca...

Author: nash
Date: Thu Jun  5 12:18:17 2008
New Revision: 663707

URL: http://svn.apache.org/viewvc?rev=663707&view=rev
Log:
Fix problems with WSDL-less deploy of static SDOs generated from XSDs that use import or include

Modified:
    incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java
    incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
    incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/XSDefinition.java
    incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/impl/XSDefinitionImpl.java

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java?rev=663707&r1=663706&r2=663707&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java Thu Jun  5 12:18:17 2008
@@ -207,32 +207,7 @@
             }
             List<XSDefinition> xsDefinitions = helper.getSchemaDefinitions(xsdFactory, resolver, en.getValue());
             for (XSDefinition xsDef: xsDefinitions) {
-                String nsURI = xsDef.getNamespace();
-                Document document = xsDef.getDocument();
-                XmlSchema schemaDef = xsDef.getSchema();
-                if (document == null) {
-                    try {
-                        NamespaceMap prefixMap = new NamespaceMap();
-                        prefixMap.add("xs", SCHEMA_NS);
-                        prefixMap.add("tns", nsURI);
-                        schemaDef.setNamespaceContext(prefixMap);
-                        Document[] docs = schemaDef.getAllSchemas();
-                        document = docs[0];
-                        xsDef.setDocument(document);
-                        for (int i = 1; i < docs.length; i++) {
-                            Element schema = docs[i].getDocumentElement();
-                            Schema schemaExt = createSchemaExt(definition);
-                            schemaExt.setElement(schema);
-                        }
-                    } catch (XmlSchemaException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-                loadXSD(schemaCollection, xsDef);
-                wsdlDefinition.getXmlSchemas().add(xsDef);
-                Element schema = document.getDocumentElement();
-                Schema schemaExt = createSchemaExt(definition);
-                schemaExt.setElement(schema);
+                addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, definition);
             }
         }
 
@@ -329,6 +304,41 @@
         return definition;
     }
     
+    private void addSchemaExtension(XSDefinition xsDef,
+                                    XmlSchemaCollection schemaCollection,
+                                    WSDLDefinition wsdlDefinition,
+                                    Definition definition) throws WSDLException {
+        if (xsDef.getAggregatedDefinitions() != null) {
+            for (XSDefinition xsd: xsDef.getAggregatedDefinitions()) {
+                addSchemaExtension(xsd, schemaCollection, wsdlDefinition, definition);
+            }
+        } else {
+            String nsURI = xsDef.getNamespace();
+            Document document = xsDef.getDocument();
+            if (document == null) {
+                try {
+                    NamespaceMap prefixMap = new NamespaceMap();
+                    prefixMap.add("xs", SCHEMA_NS);
+                    prefixMap.add("tns", nsURI);
+                    XmlSchema schemaDef = xsDef.getSchema();
+                    schemaDef.setNamespaceContext(prefixMap);
+                    Document[] docs = schemaDef.getAllSchemas();
+                    document = docs[docs.length-1];
+                    document.setDocumentURI(xsDef.getLocation().toString());
+                    xsDef.setDocument(document);
+                } catch (XmlSchemaException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            loadXSD(schemaCollection, xsDef);
+            wsdlDefinition.getXmlSchemas().add(xsDef);
+            Element schema = document.getDocumentElement();
+            Schema schemaExt = createSchemaExt(definition);
+            schemaExt.setDocumentBaseURI(document.getDocumentURI());
+            schemaExt.setElement(schema);
+        }
+    }
+
     private static void loadXSD(XmlSchemaCollection schemaCollection, XSDefinition definition) {
         if (definition.getSchema() != null) {
             return;

Modified: incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java?rev=663707&r1=663706&r2=663707&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java Thu Jun  5 12:18:17 2008
@@ -189,6 +189,7 @@
         aggregated.setUnresolved(true);
         aggregated.setSchema(facade);
         aggregated.setNamespace(ns);
+        aggregated.setAggregatedDefinitions(definitions);
         aggregated.setUnresolved(false);
 
         // FIXME: [rfeng] This is hacky

Modified: incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/XSDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/XSDefinition.java?rev=663707&r1=663706&r2=663707&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/XSDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/XSDefinition.java Thu Jun  5 12:18:17 2008
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.xsd;
 
 import java.net.URI;
+import java.util.List;
 
 import javax.xml.namespace.QName;
 
@@ -89,15 +90,28 @@
     void setDocument(Document document);
 
     /**
-     * Get the XSD element by QName
-     * @param name
+     * Get an XSD element by QName
+     * @param name The element name
      * @return The XSD element
      */
     XmlSchemaElement getXmlSchemaElement(QName name);
 
     /**
-     * @param name Get the XSD type by QName
+     * Get an XSD type by QName
+     * @param name The type name
      * @return The XSD type
      */
     XmlSchemaType getXmlSchemaType(QName name);
+
+    /**
+     * Get the aggregated definitions for a facade XSDefinition
+     * @return The aggregated definitions, or null if not a facade
+     */
+    List<XSDefinition> getAggregatedDefinitions();
+
+    /**
+     * Set the aggregated definitions for a facade XSDefinition
+     * @param name The aggregated definitions
+     */
+    void setAggregatedDefinitions(List<XSDefinition> definitions);
 }

Modified: incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/impl/XSDefinitionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/impl/XSDefinitionImpl.java?rev=663707&r1=663706&r2=663707&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/impl/XSDefinitionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/xsd/src/main/java/org/apache/tuscany/sca/xsd/impl/XSDefinitionImpl.java Thu Jun  5 12:18:17 2008
@@ -21,6 +21,7 @@
 
 import java.net.URI;
 import java.util.Iterator;
+import java.util.List;
 
 import javax.xml.namespace.QName;
 
@@ -46,6 +47,7 @@
     private URI location;
     private Document document;
     private boolean unresolved;
+    private List<XSDefinition> definitions;
 
     public XSDefinitionImpl() {
     }
@@ -218,5 +220,13 @@
         }
         return null;
     }
+ 
+    public List<XSDefinition> getAggregatedDefinitions() {
+        return definitions;
+    }
+
+    public void setAggregatedDefinitions(List<XSDefinition> definitions) {
+        this.definitions = definitions;
+    }
 
 }