You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by er...@locus.apache.org on 2000/05/15 08:58:50 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/validators/common Grammar.java XMLAttributeDecl.java XMLValidator.java

ericye      00/05/14 23:58:50

  Modified:    java/src/org/apache/xerces/validators/common Tag: schemawork
                        Grammar.java XMLAttributeDecl.java
                        XMLValidator.java
  Log:
  put fixes to pass quite a few more invalid test cases, --ericye
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.31  +7 -1      xml-xerces/java/src/org/apache/xerces/validators/common/Attic/Grammar.java
  
  Index: Grammar.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/Attic/Grammar.java,v
  retrieving revision 1.1.2.30
  retrieving revision 1.1.2.31
  diff -u -r1.1.2.30 -r1.1.2.31
  --- Grammar.java	2000/05/06 02:22:54	1.1.2.30
  +++ Grammar.java	2000/05/15 06:58:48	1.1.2.31
  @@ -69,7 +69,7 @@
   
   
   /**
  - * @version $Id: Grammar.java,v 1.1.2.30 2000/05/06 02:22:54 ericye Exp $
  + * @version $Id: Grammar.java,v 1.1.2.31 2000/05/15 06:58:48 ericye Exp $
    */
   public class Grammar
   implements XMLContentSpec.Provider {
  @@ -119,6 +119,7 @@
       private int fAttributeDeclCount = 0 ;
       private QName fAttributeDeclName[][] = new QName[INITIAL_CHUNK_COUNT][];
       private int   fAttributeDeclType[][] = new int[INITIAL_CHUNK_COUNT][];
  +    private int   fAttributeDeclEnumeration[][] = new int[INITIAL_CHUNK_COUNT][];
       private int   fAttributeDeclDefaultType[][] = new int[INITIAL_CHUNK_COUNT][];
       private DatatypeValidator fAttributeDeclDatatypeValidator[][] = new DatatypeValidator[INITIAL_CHUNK_COUNT][];
       private String fAttributeDeclDefaultValue[][] = new String[INITIAL_CHUNK_COUNT][];
  @@ -290,6 +291,7 @@
               attributeDecl.list = (fAttributeDeclType[chunk][index] & LIST_FLAG) != 0;
           }
           attributeDecl.datatypeValidator = fAttributeDeclDatatypeValidator[chunk][index];
  +        attributeDecl.enumeration = fAttributeDeclEnumeration[chunk][index];
           attributeDecl.defaultType = fAttributeDeclDefaultType[chunk][index];
           attributeDecl.defaultValue = fAttributeDeclDefaultValue[chunk][index];
           return true;
  @@ -381,6 +383,7 @@
           fAttributeDeclName[chunk][index]                    = new QName();
           fAttributeDeclType[chunk][index]                    = -1;
           fAttributeDeclDatatypeValidator[chunk][index]       = null;
  +        fAttributeDeclEnumeration[chunk][index] = -1;
           fAttributeDeclDefaultType[chunk][index] = XMLAttributeDecl.DEFAULT_TYPE_IMPLIED;
           fAttributeDeclDefaultValue[chunk][index]            = null;
           fAttributeDeclNextAttributeDeclIndex[chunk][index]  = -1;
  @@ -398,6 +401,7 @@
           if (attributeDecl.list) {
               fAttributeDeclType[attrChunk][attrIndex] |= LIST_FLAG;
           }
  +        fAttributeDeclEnumeration[attrChunk][attrIndex]  =  attributeDecl.enumeration;
           fAttributeDeclDefaultType[attrChunk][attrIndex]  =  attributeDecl.defaultType;
           fAttributeDeclDatatypeValidator[attrChunk][attrIndex] =  attributeDecl.datatypeValidator;
           fAttributeDeclDefaultValue[attrChunk][attrIndex]      =  attributeDecl.defaultValue;
  @@ -758,6 +762,7 @@
           } catch (ArrayIndexOutOfBoundsException ex) {
               fAttributeDeclName = resize(fAttributeDeclName, fAttributeDeclName.length * 2);
               fAttributeDeclType = resize(fAttributeDeclType, fAttributeDeclType.length * 2);
  +            fAttributeDeclEnumeration = resize(fAttributeDeclEnumeration, fAttributeDeclEnumeration.length * 2);
               fAttributeDeclDefaultType = resize(fAttributeDeclDefaultType, fAttributeDeclDefaultType.length * 2);
               fAttributeDeclDatatypeValidator = resize(fAttributeDeclDatatypeValidator, fAttributeDeclDatatypeValidator.length * 2);
               fAttributeDeclDefaultValue = resize(fAttributeDeclDefaultValue, fAttributeDeclDefaultValue.length * 2);
  @@ -767,6 +772,7 @@
           }
           fAttributeDeclName[chunk] = new QName[CHUNK_SIZE];
           fAttributeDeclType[chunk] = new int[CHUNK_SIZE];
  +        fAttributeDeclEnumeration[chunk] = new int[CHUNK_SIZE];
           fAttributeDeclDefaultType[chunk] = new int[CHUNK_SIZE];
           fAttributeDeclDatatypeValidator[chunk] = new DatatypeValidator[CHUNK_SIZE];
           fAttributeDeclDefaultValue[chunk] = new String[CHUNK_SIZE];
  
  
  
  1.1.2.7   +4 -1      xml-xerces/java/src/org/apache/xerces/validators/common/Attic/XMLAttributeDecl.java
  
  Index: XMLAttributeDecl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/Attic/XMLAttributeDecl.java,v
  retrieving revision 1.1.2.6
  retrieving revision 1.1.2.7
  diff -u -r1.1.2.6 -r1.1.2.7
  --- XMLAttributeDecl.java	2000/05/05 20:53:09	1.1.2.6
  +++ XMLAttributeDecl.java	2000/05/15 06:58:48	1.1.2.7
  @@ -61,7 +61,7 @@
   import org.apache.xerces.validators.datatype.DatatypeValidator;
   
   /**
  - * @version $Id: XMLAttributeDecl.java,v 1.1.2.6 2000/05/05 20:53:09 andyc Exp $
  + * @version $Id: XMLAttributeDecl.java,v 1.1.2.7 2000/05/15 06:58:48 ericye Exp $
    */
   public class XMLAttributeDecl {
   
  @@ -109,6 +109,7 @@
       public boolean list;
   
       // values
  +    public int enumeration;
   
       public int defaultType;
   
  @@ -135,6 +136,7 @@
           datatypeValidator = null;
           type = -1;
           list = false;
  +        enumeration = -1;
           defaultType = DEFAULT_TYPE_IMPLIED;
           defaultValue = null;
       }
  @@ -144,6 +146,7 @@
           datatypeValidator = attributeDecl.datatypeValidator;
           type = attributeDecl.type;
           list = attributeDecl.list;
  +        enumeration = attributeDecl.enumeration;
           defaultType = attributeDecl.defaultType;
           defaultValue = attributeDecl.defaultValue;
       }
  
  
  
  1.4.2.30  +70 -12    xml-xerces/java/src/org/apache/xerces/validators/common/XMLValidator.java
  
  Index: XMLValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/common/XMLValidator.java,v
  retrieving revision 1.4.2.29
  retrieving revision 1.4.2.30
  diff -u -r1.4.2.29 -r1.4.2.30
  --- XMLValidator.java	2000/05/14 08:03:45	1.4.2.29
  +++ XMLValidator.java	2000/05/15 06:58:48	1.4.2.30
  @@ -105,7 +105,7 @@
   /**
    * This class is the super all-in-one validator used by the parser.
    *
  - * @version $Id: XMLValidator.java,v 1.4.2.29 2000/05/14 08:03:45 ericye Exp $
  + * @version $Id: XMLValidator.java,v 1.4.2.30 2000/05/15 06:58:48 ericye Exp $
    */
   public final class XMLValidator
       implements DefaultEntityHandler.EventHandler,
  @@ -199,15 +199,15 @@
       //          attribute declaration is required to accomodate
       //          Schema facets on simple types.
       private AttributeValidator fAttValidatorCDATA = null;
  -    private AttributeValidator fAttValidatorID = null;
  -    private AttributeValidator fAttValidatorIDREF = null;
  -    private AttributeValidator fAttValidatorIDREFS = null;
  -    private AttributeValidator fAttValidatorENTITY = null;
  -    private AttributeValidator fAttValidatorENTITIES = null;
  -    private AttributeValidator fAttValidatorNMTOKEN = null;
  -    private AttributeValidator fAttValidatorNMTOKENS = null;
  -    private AttributeValidator fAttValidatorNOTATION = null;
  -    private AttributeValidator fAttValidatorENUMERATION = null;
  +    private AttributeValidator fAttValidatorID = new AttValidatorID();
  +    private AttributeValidator fAttValidatorIDREF = new AttValidatorIDREF();
  +    private AttributeValidator fAttValidatorIDREFS = new AttValidatorIDREFS();
  +    private AttributeValidator fAttValidatorENTITY = new AttValidatorENTITY();
  +    private AttributeValidator fAttValidatorENTITIES = new AttValidatorENTITIES();
  +    private AttributeValidator fAttValidatorNMTOKEN = new AttValidatorNMTOKEN();
  +    private AttributeValidator fAttValidatorNMTOKENS = new AttValidatorNMTOKENS();
  +    private AttributeValidator fAttValidatorNOTATION = new AttValidatorNOTATION();
  +    private AttributeValidator fAttValidatorENUMERATION = new AttValidatorENUMERATION();
       private AttributeValidator fAttValidatorDATATYPE = null;
   
       // Package access for use by AttributeValidator classes.
  @@ -3620,10 +3620,22 @@
                       }
                       else  {
   
  -                        fGrammar.getAttributeDecl(attDefIndex, fTempAttDecl);
  +                        fGrammar.getAttributeDecl(attDefIndex, fTempAttDecl); 
   
                           //TO DO: special handling needed here for IDs IDrefs, ENTITIES, ?NOTations
   
  +                        if (fGrammar instanceof DTDGrammar && 
  +                            (fTempAttDecl.type == XMLAttributeDecl.TYPE_ENTITY ||
  +                            fTempAttDecl.type == XMLAttributeDecl.TYPE_ENUMERATION ||
  +                            fTempAttDecl.type == XMLAttributeDecl.TYPE_ID ||
  +                            fTempAttDecl.type == XMLAttributeDecl.TYPE_IDREF ||
  +                            fTempAttDecl.type == XMLAttributeDecl.TYPE_NMTOKEN ||
  +                            fTempAttDecl.type == XMLAttributeDecl.TYPE_NOTATION)
  +                            ) {
  +
  +                            validateDTDattribute(element, attrList.getAttValue(index), fTempAttDecl);
  +                        }
  +
                           if (fTempAttDecl.datatypeValidator == null) {
                               Object[] args = { fStringPool.toString(element.rawname),
                                                 fStringPool.toString(attrList.getAttrName(index)) };
  @@ -3685,6 +3697,51 @@
   
       } // validateElementAndAttributes(QName,XMLAttrList)
   
  +
  +    //validate attributes in DTD fashion
  +    private void validateDTDattribute(QName element, int attValue, 
  +                                      XMLAttributeDecl attributeDecl) throws Exception{
  +        AttributeValidator av = null;
  +        switch (attributeDecl.type) {
  +        case XMLAttributeDecl.TYPE_ENTITY:
  +            if (attributeDecl.list) {
  +                av = fAttValidatorENTITIES;
  +            }
  +            else {
  +                av = fAttValidatorENTITY;
  +            }
  +            break;
  +        case XMLAttributeDecl.TYPE_ENUMERATION:
  +                av = fAttValidatorENUMERATION;
  +                break;
  +        case XMLAttributeDecl.TYPE_ID:
  +            av = fAttValidatorID;
  +            break;
  +        case XMLAttributeDecl.TYPE_IDREF:
  +            if (attributeDecl.list) {
  +                av = fAttValidatorIDREFS;
  +            }
  +            else {
  +                av = fAttValidatorIDREF;
  +            }
  +            break;
  +        case XMLAttributeDecl.TYPE_NOTATION:
  +            av = fAttValidatorNOTATION;
  +            break;
  +        case XMLAttributeDecl.TYPE_NMTOKEN:
  +            if (attributeDecl.list) {
  +                av = fAttValidatorNMTOKENS;
  +            }
  +            else {
  +                av = fAttValidatorNMTOKEN;
  +            }
  +            break;
  +        }
  +
  +        av.normalize(element, attributeDecl.name, attValue, 
  +                     attributeDecl.type, attributeDecl.enumeration);
  +    }
  +
       /** Character data in content. */
       private void charDataInContent() {
   
  @@ -4207,8 +4264,9 @@
           //
           // AttributeValidator methods
           //
  -
  +        
           /** Normalize. */
  +        
           public int normalize(QName element, QName attribute, 
                                int attValueHandle, int attType, 
                                int enumHandle) throws Exception {