Author: jkaputin
Date: Thu Nov 9 09:21:36 2006
New Revision: 472982
URL: http://svn.apache.org/viewvc?view=rev&rev=472982
Log:
WODEN-13 Ensure that for the implicit import of XML
Schema namespace the component model contains only
the primitive and derived built-in types.
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java?view=diff&rev=472982&r1=472981&r2=472982
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
Thu Nov 9 09:21:36 2006
@@ -87,4 +87,50 @@
{ Q_ELEM_REDEFINE_XSD_1999, Q_ELEM_REDEFINE_XSD_2000,
Q_ELEM_REDEFINE_XSD_2001 });
+ //Built-in XML Schema types. 19 primitive and 25 derived.
+ public static final List LIST_Q_BUILT_IN_TYPES = Arrays.asList(new QName[]
+ { new QName(NS_URI_XSD_2001, "string"),
+ new QName(NS_URI_XSD_2001, "boolean"),
+ new QName(NS_URI_XSD_2001, "decimal"),
+ new QName(NS_URI_XSD_2001, "float"),
+ new QName(NS_URI_XSD_2001, "double"),
+ new QName(NS_URI_XSD_2001, "duration"),
+ new QName(NS_URI_XSD_2001, "dateTime"),
+ new QName(NS_URI_XSD_2001, "time"),
+ new QName(NS_URI_XSD_2001, "date"),
+ new QName(NS_URI_XSD_2001, "gYearMonth"),
+ new QName(NS_URI_XSD_2001, "gYear"),
+ new QName(NS_URI_XSD_2001, "gMonthDay"),
+ new QName(NS_URI_XSD_2001, "gDay"),
+ new QName(NS_URI_XSD_2001, "gMonth"),
+ new QName(NS_URI_XSD_2001, "hexBinary"),
+ new QName(NS_URI_XSD_2001, "base64Binary"),
+ new QName(NS_URI_XSD_2001, "anyURI"),
+ new QName(NS_URI_XSD_2001, "QName"),
+ new QName(NS_URI_XSD_2001, "NOTATION"),
+ new QName(NS_URI_XSD_2001, "normalizedString"),
+ new QName(NS_URI_XSD_2001, "token"),
+ new QName(NS_URI_XSD_2001, "language"),
+ new QName(NS_URI_XSD_2001, "NMTOKEN"),
+ new QName(NS_URI_XSD_2001, "NMTOKENS"),
+ new QName(NS_URI_XSD_2001, "Name"),
+ new QName(NS_URI_XSD_2001, "NCName"),
+ new QName(NS_URI_XSD_2001, "ID"),
+ new QName(NS_URI_XSD_2001, "IDREF"),
+ new QName(NS_URI_XSD_2001, "IDREFS"),
+ new QName(NS_URI_XSD_2001, "ENTITY"),
+ new QName(NS_URI_XSD_2001, "ENTITIES"),
+ new QName(NS_URI_XSD_2001, "integer"),
+ new QName(NS_URI_XSD_2001, "nonPositiveInteger"),
+ new QName(NS_URI_XSD_2001, "negativeInteger"),
+ new QName(NS_URI_XSD_2001, "long"),
+ new QName(NS_URI_XSD_2001, "int"),
+ new QName(NS_URI_XSD_2001, "short"),
+ new QName(NS_URI_XSD_2001, "byte"),
+ new QName(NS_URI_XSD_2001, "nonNegativeInteger"),
+ new QName(NS_URI_XSD_2001, "unsignedLong"),
+ new QName(NS_URI_XSD_2001, "unsignedInt"),
+ new QName(NS_URI_XSD_2001, "unsignedShort"),
+ new QName(NS_URI_XSD_2001, "unsignedByte"),
+ new QName(NS_URI_XSD_2001, "positiveInteger") });
}
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
URL:
http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java?view=diff&rev=472982&r1=472981&r2=472982
==============================================================================
---
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
(original)
+++
incubator/woden/trunk/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
Thu Nov 9 09:21:36 2006
@@ -23,6 +23,7 @@
import javax.xml.namespace.QName;
import org.apache.woden.WSDLException;
+import org.apache.woden.internal.schema.SchemaConstants;
import org.apache.woden.internal.wsdl20.BindingFaultImpl;
import org.apache.woden.internal.wsdl20.BindingFaultReferenceImpl;
import org.apache.woden.internal.wsdl20.BindingImpl;
@@ -177,8 +178,13 @@
}
}
- //parse elements and types declared directly in this schema
- buildElementDeclarations(schemaDef, schemaTns, typeSystemURI);
+ //Now parse elements and types declared directly in this schema
+
+
if(!SchemaConstants.NS_URI_XSD_2001.equals(schemaDef.getTargetNamespace())) {
+ //XML Schema namespace is implicitly imported to get built-in
types...we don't want the elements.
+ //TODO detect if the XML Schema NS has been explicitly
imported (if so, we do want the elements)
+ buildElementDeclarations(schemaDef, schemaTns, typeSystemURI);
+ }
buildTypeDefinitions(schemaDef, schemaTns, typeSystemURI);
fSchemasDone.add(schemaDef);
}
@@ -209,7 +215,6 @@
fDesc.addElementDeclaration(ed);
}
}
-
}
/*
@@ -220,19 +225,27 @@
XmlSchemaObjectTable typeTable = schemaDef.getSchemaTypes();
Iterator qnames = typeTable.getNames();
while (qnames.hasNext()) {
- QName xsdQN = (QName) qnames.next();
- QName tdQN = xsdQN;
- if(xsdQN.getNamespaceURI() == null) {
+ QName xstQN = (QName) qnames.next();
+
+ if(SchemaConstants.NS_URI_XSD_2001.equals(schemaTns) &&
+ !SchemaConstants.LIST_Q_BUILT_IN_TYPES.contains(xstQN)) {
+ //XML Schema namespace is implicitly imported to get built-in
types...we don't want non-built-in types.
+ //TODO detect if the XML Schema NS has been explicitly
imported (if so, we want ALL type defs)
+ continue;
+ }
+
+ QName tdQN = xstQN;
+ if(xstQN.getNamespaceURI() == null) {
//this is how XmlSchema represents tns for chameleon
xs:includes,
//so replace it with the including schema's tns.
- tdQN = new QName(schemaTns, xsdQN.getLocalPart(),
xsdQN.getPrefix());
+ tdQN = new QName(schemaTns, xstQN.getLocalPart(),
xstQN.getPrefix());
}
if (tdQN.getNamespaceURI().equals(schemaTns)) {
TypeDefinitionImpl td = new TypeDefinitionImpl();
td.setName(tdQN);
td.setSystem(typeSystemURI);
td.setContentModel(Constants.API_APACHE_WS_XS);
- td.setContent(typeTable.getItem(xsdQN));
+ td.setContent(typeTable.getItem(xstQN));
fDesc.addTypeDefinition(td);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]