You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2002/01/03 21:59:43 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs/traversers XSDSimpleTypeTraverser.java
sandygao 02/01/03 12:59:43
Modified: java/src/org/apache/xerces/impl/xs/traversers
XSDSimpleTypeTraverser.java
Log:
1. We can access anySimpleType directly from the SchemaGrammar class.
This is more efficient than looking it up in a hashtable by name.
2. After "getGlobalDecl", we need to check whether the retuned type is a
simpleType, before cast it to XSSimpleType.
Revision Changes Path
1.6 +15 -11 xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
Index: XSDSimpleTypeTraverser.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XSDSimpleTypeTraverser.java 14 Dec 2001 20:04:16 -0000 1.5
+++ XSDSimpleTypeTraverser.java 3 Jan 2002 20:59:43 -0000 1.6
@@ -65,6 +65,7 @@
import org.apache.xerces.impl.XMLErrorReporter;
import org.apache.xerces.impl.xs.SchemaGrammar;
import org.apache.xerces.impl.xs.SchemaSymbols;
+import org.apache.xerces.impl.xs.XSTypeDecl;
import org.apache.xerces.util.DOMUtil;
import org.apache.xerces.impl.xs.util.XInt;
@@ -115,7 +116,7 @@
*
* @author Elena Litani, IBM
* @author Neeraj Bajaj, Sun Microsystems, Inc.
- * @version $Id: XSDSimpleTypeTraverser.java,v 1.5 2001/12/14 20:04:16 sandygao Exp $
+ * @version $Id: XSDSimpleTypeTraverser.java,v 1.6 2002/01/03 20:59:43 sandygao Exp $
*/
class XSDSimpleTypeTraverser extends XSDAbstractTraverser {
@@ -297,13 +298,13 @@
if (baseValidator == null) {
Object[] args = {content.getAttribute( SchemaSymbols.ATT_BASE )};
reportSchemaError("dt-unknown-basetype", args);
- return (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
+ return SchemaGrammar.fAnySimpleType;
}
}
else {
Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
reportSchemaError("dt-simpleType",new Object[]{SchemaSymbols.ELT_SIMPLETYPE, nameProperty, "(annotation?, (restriction | list | union))"});
- return (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
+ return SchemaGrammar.fAnySimpleType;
}
}
else {
@@ -328,7 +329,7 @@
if (baseValidator == null) {
Object[] args = { content.getAttribute( SchemaSymbols.ATT_BASE ), nameProperty};
reportSchemaError("dt-unknown-basetype", args);
- baseValidator = (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
+ baseValidator = SchemaGrammar.fAnySimpleType;
}
// ------------------------------
// (variety is list)cos-list-of-atomic
@@ -417,7 +418,7 @@
if (baseValidator == null) {
Object[] args = { content.getAttribute( SchemaSymbols.ATT_BASE ), nameProperty};
reportSchemaError("dt-unknown-basetype", args);
- baseValidator = (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
+ baseValidator = SchemaGrammar.fAnySimpleType;
}
content = DOMUtil.getNextSiblingElement( content );
}
@@ -520,20 +521,23 @@
(baseTypeStr.localpart.equals(SchemaSymbols.ATTVAL_ANYSIMPLETYPE) ||
baseTypeStr.localpart.equals(SchemaSymbols.ATTVAL_ANYTYPE)) &&
baseRefContext == SchemaSymbols.RESTRICTION) {
- String base = baseTypeStr.localpart;
reportSchemaError("dt-unknown-basetype", new Object[] {
DOMUtil.getAttrValue(elm, SchemaSymbols.ATT_NAME), DOMUtil.getAttrValue(elm, SchemaSymbols.ATT_BASE)});
- return (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
+ return SchemaGrammar.fAnySimpleType;
}
- XSSimpleType baseType = null;
- baseType = (XSSimpleType)fSchemaHandler.getGlobalDecl(schemaDoc, fSchemaHandler.TYPEDECL_TYPE, baseTypeStr);
+ XSTypeDecl baseType = (XSTypeDecl)fSchemaHandler.getGlobalDecl(schemaDoc, fSchemaHandler.TYPEDECL_TYPE, baseTypeStr);
if (baseType != null) {
+ if (baseType.getXSType() != XSTypeDecl.SIMPLE_TYPE) {
+ reportSchemaError("st-props-correct.4.1", new Object[] { baseTypeStr.rawname} );
+ return SchemaGrammar.fAnySimpleType;
+ }
if ((baseType.getFinalSet() & baseRefContext) != 0) {
- reportSchemaError("dt-restiction-final",new Object[] { baseTypeStr.rawname} );
+ reportSchemaError("dt-restiction-final", new Object[] { baseTypeStr.rawname} );
}
}
- return baseType;
+
+ return (XSSimpleType)baseType;
}
// find if union datatype validator has list datatype member.
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org