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]

Reply via email to