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;
+ }
}