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