You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by lm...@apache.org on 2001/10/07 19:17:41 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/v2 XSDSimpleTypeTraverser.java
lmartin 01/10/07 10:17:41
Modified: java/src/org/apache/xerces/impl/v2
XSDSimpleTypeTraverser.java
Log:
Moved some facet and restriction code from simple type traverser to abstract traverser. Needed by complexTypes too
Revision Changes Path
1.19 +5 -185 xml-xerces/java/src/org/apache/xerces/impl/v2/XSDSimpleTypeTraverser.java
Index: XSDSimpleTypeTraverser.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/XSDSimpleTypeTraverser.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- XSDSimpleTypeTraverser.java 2001/10/02 18:43:03 1.18
+++ XSDSimpleTypeTraverser.java 2001/10/07 17:17:41 1.19
@@ -109,17 +109,15 @@
* </union>
*
* @author Elena Litani, IBM
- * @version $Id: XSDSimpleTypeTraverser.java,v 1.18 2001/10/02 18:43:03 neilg Exp $
+ * @version $Id: XSDSimpleTypeTraverser.java,v 1.19 2001/10/07 17:17:41 lmartin Exp $
*/
class XSDSimpleTypeTraverser extends XSDAbstractTraverser {
//private data
- private Hashtable fFacetData = new Hashtable(10);
private String fListName = "";
private XSDocumentInfo fSchemaDoc = null;
private SchemaGrammar fGrammar = null;
- private StringBuffer fPattern = null;
private int fSimpleTypeAnonCount = 0;
private final QName fQName = new QName();
@@ -161,6 +159,7 @@
String nameProperty = (String)attrValues[XSAttributeChecker.ATTIDX_NAME];
String qualifiedName = nameProperty;
+ Hashtable fFacetData = null;
//---------------------------------------------------
// set qualified name
@@ -392,174 +391,11 @@
}
}
- int numFacets=0;
- fFacetData.clear();
if (restriction && content != null) {
- short flags = 0; // flag facets that have fixed="true"
- int numEnumerationLiterals = 0;
- Vector enumData = new Vector();
- content = checkContent(content , contentAttrs, schemaDoc);
- String facet;
- while (content != null) {
- // General Attribute Checking
- Object[] attrs = fAttrChecker.checkAttributes(content, false, schemaDoc);
- numFacets++;
- facet = DOMUtil.getLocalName(content);
- if (facet.equals(SchemaSymbols.ELT_ENUMERATION)) {
- numEnumerationLiterals++;
- String enumVal = DOMUtil.getAttrValue(content, SchemaSymbols.ATT_VALUE);
- String localName;
- if (baseValidator instanceof NOTATIONDatatypeValidator) {
- fAttrChecker.checkAttributes(content, false, schemaDoc);
- String prefix = fSchemaHandler.EMPTY_STRING;
- String localpart = enumVal;
- int colonptr = enumVal.indexOf(":");
- if (colonptr > 0) {
- prefix = enumVal.substring(0,colonptr);
- localpart = enumVal.substring(colonptr+1);
-
- }
- String uriStr = schemaDoc.fNamespaceSupport.getURI(prefix);
- fQName.setValues(prefix, localpart, null, uriStr );
- XSNotationDecl notation = (XSNotationDecl)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.NOTATION_TYPE , fQName);
-
- if (notation == null) {
- reportGenericSchemaError("Notation '" + localpart +
- "' not found in the grammar "+ uriStr);
-
- }
- enumVal=nameProperty;
- }
- enumData.addElement(enumVal);
- checkContent(DOMUtil.getFirstChildElement( content ), attrs, schemaDoc);
- }
- else if (facet.equals(SchemaSymbols.ELT_ANNOTATION) || facet.equals(SchemaSymbols.ELT_SIMPLETYPE)) {
- //REVISIT:
- Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "ListUnionRestrictionError",
- args,
- XMLErrorReporter.SEVERITY_ERROR);
-
- }
- else if (facet.equals(SchemaSymbols.ELT_PATTERN)) {
- if (fPattern == null) {
- //REVISIT: size of buffer
- fPattern = new StringBuffer (DOMUtil.getAttrValue( content, SchemaSymbols.ATT_VALUE ));
- }
- else {
- // ---------------------------------------------
- //datatypes: 5.2.4 pattern: src-multiple-pattern
- // ---------------------------------------------
- fPattern.append("|");
- fPattern.append(DOMUtil.getAttrValue(content, SchemaSymbols.ATT_VALUE ));
- checkContent(DOMUtil.getFirstChildElement( content ), attrs, schemaDoc);
- }
- }
- else {
- if (fFacetData.containsKey(facet))
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "DatatypeError",
- new Object[]{"The facet '" + facet + "' is defined more than once."},
- XMLErrorReporter.SEVERITY_ERROR);
- fFacetData.put(facet,content.getAttribute( SchemaSymbols.ATT_VALUE ));
-
- if (content.getAttribute( SchemaSymbols.ATT_FIXED).equals(SchemaSymbols.ATTVAL_TRUE) ||
- content.getAttribute( SchemaSymbols.ATT_FIXED).equals(SchemaSymbols.ATTVAL_TRUE_1)) {
- // --------------------------------------------
- // set fixed facet flags
- // length - must remain const through derivation
- // thus we don't care if it fixed
- // --------------------------------------------
- if (facet.equals(SchemaSymbols.ELT_MINLENGTH)) {
- flags |= DatatypeValidator.FACET_MINLENGTH;
- }
- else if (facet.equals(SchemaSymbols.ELT_MAXLENGTH)) {
- flags |= DatatypeValidator.FACET_MAXLENGTH;
- }
- else if (facet.equals(SchemaSymbols.ELT_MAXEXCLUSIVE)) {
- flags |= DatatypeValidator.FACET_MAXEXCLUSIVE;
- }
- else if (facet.equals(SchemaSymbols.ELT_MAXINCLUSIVE)) {
- flags |= DatatypeValidator.FACET_MAXINCLUSIVE;
- }
- else if (facet.equals(SchemaSymbols.ELT_MINEXCLUSIVE)) {
- flags |= DatatypeValidator.FACET_MINEXCLUSIVE;
- }
- else if (facet.equals(SchemaSymbols.ELT_MININCLUSIVE)) {
- flags |= DatatypeValidator.FACET_MININCLUSIVE;
- }
- else if (facet.equals(SchemaSymbols.ELT_TOTALDIGITS)) {
- flags |= DatatypeValidator.FACET_TOTALDIGITS;
- }
- else if (facet.equals(SchemaSymbols.ELT_FRACTIONDIGITS)) {
- flags |= DatatypeValidator.FACET_FRACTIONDIGITS;
- }
- else if (facet.equals(SchemaSymbols.ELT_WHITESPACE) &&
- baseValidator instanceof StringDatatypeValidator) {
- flags |= DatatypeValidator.FACET_WHITESPACE;
- }
- }
- checkContent(DOMUtil.getFirstChildElement( content ), attrs, schemaDoc);
- }
- // REVISIT: when to return the array
- fAttrChecker.returnAttrArray (attrs, schemaDoc);
- content = DOMUtil.getNextSiblingElement(content);
- }
- if (numEnumerationLiterals > 0) {
- fFacetData.put(SchemaSymbols.ELT_ENUMERATION, enumData);
- }
- if (fPattern !=null) {
- fFacetData.put(SchemaSymbols.ELT_PATTERN, fPattern.toString());
- }
- if (flags != 0) {
- fFacetData.put(DatatypeValidator.FACET_FIXED, new Short(flags));
- }
- fPattern = null;
+ fFacetInfo fi = traverseFacets(content, contentAttrs,nameProperty, baseValidator, schemaDoc, fGrammar);
+ fFacetData = fi.facetdata;
}
- else if (list && content!=null) {
- // report error - must not have any children!
- if (baseTypeName != null) {
- content = checkContent(content, contentAttrs, schemaDoc);
- if (content!=null) {
- //REVISIT:
- Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "ListUnionRestrictionError",
- args,
- XMLErrorReporter.SEVERITY_ERROR);
- }
- }
- else {
- Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "ListUnionRestrictionError",
- args,
- XMLErrorReporter.SEVERITY_ERROR);
- }
- }
- else if (union && content!=null) {
- //report error - must not have any children!
- if (memberTypes != null) {
- content = checkContent(content, contentAttrs, schemaDoc);
- if (content!=null) {
- Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "ListUnionRestrictionError",
- args,
- XMLErrorReporter.SEVERITY_ERROR);
- }
- }
- else {
- Object[] args = { simpleTypeDecl.getAttribute( SchemaSymbols.ATT_NAME )};
- fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
- "ListUnionRestrictionError",
- args,
- XMLErrorReporter.SEVERITY_ERROR);
- }
- }
-
DatatypeValidator newDV = null;
if (list) {
try {
@@ -569,23 +405,7 @@
}
}
else if (restriction) {
- Class validatorDef = baseValidator.getClass();
- Class [] validatorArgsClass = new Class[] {
- org.apache.xerces.impl.v2.datatypes.DatatypeValidator.class,
- java.util.Hashtable.class,
- boolean.class};
-
- Object [] validatorArgs = new Object[] {baseValidator, fFacetData, Boolean.FALSE};
- try {
- Constructor validatorConstructor = validatorDef.getConstructor( validatorArgsClass );
- newDV = (DatatypeValidator) validatorConstructor.newInstance(validatorArgs);
- } catch (NoSuchMethodException e) {
- } catch ( InstantiationException e ) {
- } catch ( IllegalAccessException e ) {
- } catch ( IllegalArgumentException e ) {
- } catch ( InvocationTargetException e ) {
- reportGenericSchemaError(e.getMessage());
- }
+ newDV = createRestrictedValidator(baseValidator, fFacetData);
}
else { //union
newDV = new UnionDatatypeValidator(dTValidators);
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org