You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by el...@apache.org on 2001/04/12 20:31:31 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/validators/datatype AbstractDatatypeValidator.java AnyURIDatatypeValidator.java Base64BinaryDatatypeValidator.java BooleanDatatypeValidator.java DatatypeValidator.java DateTimeValidator.java DecimalDatatypeValidator.java DoubleDatatypeValidator.java FloatDatatypeValidator.java HexBinaryDatatypeValidator.java ListDatatypeValidator.java NOTATIONDatatypeValidator.java QNameDatatypeValidator.java StringDatatypeValidator.java UnionDatatypeValidator.java

elena       01/04/12 11:31:31

  Modified:    java/src/org/apache/xerces/validators/datatype
                        AbstractDatatypeValidator.java
                        AnyURIDatatypeValidator.java
                        Base64BinaryDatatypeValidator.java
                        BooleanDatatypeValidator.java
                        DatatypeValidator.java DateTimeValidator.java
                        DecimalDatatypeValidator.java
                        DoubleDatatypeValidator.java
                        FloatDatatypeValidator.java
                        HexBinaryDatatypeValidator.java
                        ListDatatypeValidator.java
                        NOTATIONDatatypeValidator.java
                        QNameDatatypeValidator.java
                        StringDatatypeValidator.java
                        UnionDatatypeValidator.java
  Log:
  Code clean up
  
  Revision  Changes    Path
  1.8       +6 -4      xml-xerces/java/src/org/apache/xerces/validators/datatype/AbstractDatatypeValidator.java
  
  Index: AbstractDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/AbstractDatatypeValidator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- AbstractDatatypeValidator.java	2001/04/02 13:37:39	1.7
  +++ AbstractDatatypeValidator.java	2001/04/12 18:31:26	1.8
  @@ -57,7 +57,7 @@
   
   
   /**
  - * @version $Id: AbstractDatatypeValidator.java,v 1.7 2001/04/02 13:37:39 elena Exp $
  + * @version $Id: AbstractDatatypeValidator.java,v 1.8 2001/04/12 18:31:26 elena Exp $
    * @author  Elena Litani
    * @author  Jeffrey Rodriguez
   */
  @@ -67,13 +67,15 @@
   package org.apache.xerces.validators.datatype;
   import java.util.Hashtable;
   import org.apache.xerces.validators.datatype.DatatypeValidator;
  +import org.apache.xerces.utils.regex.RegularExpression;
   
  -
   public abstract class AbstractDatatypeValidator implements DatatypeValidator, Cloneable {
   
       protected Hashtable fFacets; // Hashtable of Facets Strings.
  -    protected DatatypeValidator fBaseValidator = null; // formerly private in every class!
  -
  +    protected DatatypeValidator fBaseValidator = null; 
  +    protected String     fPattern         = null;
  +    protected RegularExpression fRegex    = null;
  +    protected short fFacetsDefined          = 0;
        /**
        * Checks that "content" string is valid
        * datatype.
  
  
  
  1.2       +11 -21    xml-xerces/java/src/org/apache/xerces/validators/datatype/AnyURIDatatypeValidator.java
  
  Index: AnyURIDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/AnyURIDatatypeValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AnyURIDatatypeValidator.java	2001/04/09 20:57:38	1.1
  +++ AnyURIDatatypeValidator.java	2001/04/12 18:31:26	1.2
  @@ -76,16 +76,13 @@
    * @author Mark Swinkles - List Validation refactoring
    * @see          RFC 2396
    * @see Tim Berners-Lee, et. al. RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax.. 1998 Available at: http://www.ietf.org/rfc/rfc2396.txt
  - * @version  $Id: AnyURIDatatypeValidator.java,v 1.1 2001/04/09 20:57:38 elena Exp $
  + * @version  $Id: AnyURIDatatypeValidator.java,v 1.2 2001/04/12 18:31:26 elena Exp $
    */
   public class AnyURIDatatypeValidator extends AbstractDatatypeValidator {
       private int       fLength          = 0;
       private int       fMaxLength       = Integer.MAX_VALUE;
       private int       fMinLength       = 0;
  -    private String    fPattern         = null;
       private Vector    fEnumeration     = null;
  -    private int       fFacetsDefined   = 0;
  -    private RegularExpression fRegex   = null;
   
       public AnyURIDatatypeValidator () throws InvalidDatatypeFacetException{
           this ( null, null, false ); // Native, No Facets defined, Restriction
  @@ -95,7 +92,7 @@
                                        boolean derivedByList ) throws InvalidDatatypeFacetException {
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -107,7 +104,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -119,7 +116,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -131,7 +128,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -144,13 +141,13 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
                   }
  @@ -255,28 +252,28 @@
                   // inherit length
                   if ( (anyURIBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = anyURIBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (anyURIBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = anyURIBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (anyURIBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = anyURIBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (anyURIBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = anyURIBase.fEnumeration;
                   }
               }
  @@ -383,13 +380,6 @@
        */
       public Object clone() throws CloneNotSupportedException {
           throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
  -    }
  -
  -
  -    // Private methods starts here
  -
  -    private void setBasetype(DatatypeValidator base) {
  -        fBaseValidator = base;
       }
   
   }
  
  
  
  1.2       +12 -24    xml-xerces/java/src/org/apache/xerces/validators/datatype/Base64BinaryDatatypeValidator.java
  
  Index: Base64BinaryDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/Base64BinaryDatatypeValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Base64BinaryDatatypeValidator.java	2001/04/09 20:57:38	1.1
  +++ Base64BinaryDatatypeValidator.java	2001/04/12 18:31:26	1.2
  @@ -72,18 +72,14 @@
    * @author Kito D. Mann, Virtua Communications Corp.
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: Base64BinaryDatatypeValidator.java,v 1.1 2001/04/09 20:57:38 elena Exp $
  + * @version $Id: Base64BinaryDatatypeValidator.java,v 1.2 2001/04/12 18:31:26 elena Exp $
    */
   public class Base64BinaryDatatypeValidator extends AbstractDatatypeValidator{
       private Locale     fLocale          = null;
  -
       private int        fLength          = 0;
       private int        fMaxLength       = Integer.MAX_VALUE;
       private int        fMinLength       = 0;
  -    private String     fPattern         = null;
       private Vector     fEnumeration     = null;
  -    private int        fFacetsDefined   = 0;
  -    private RegularExpression fRegex    = null;
   
   
       public  Base64BinaryDatatypeValidator () throws InvalidDatatypeFacetException{
  @@ -95,7 +91,7 @@
                                              boolean derivedByList ) throws InvalidDatatypeFacetException {
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -107,7 +103,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -119,7 +115,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -131,7 +127,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -144,13 +140,13 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
                   }
  @@ -191,7 +187,7 @@
               }
   
               // if base type is string, check facets against base.facets, and inherit facets from base
  -            if (base != null && base instanceof Base64BinaryDatatypeValidator) {
  +            if (base != null) {
                   Base64BinaryDatatypeValidator base64BBase = (Base64BinaryDatatypeValidator)base;
   
                   // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  @@ -255,28 +251,28 @@
                   // inherit length
                   if ( (base64BBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = base64BBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (base64BBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = base64BBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (base64BBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = base64BBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (base64BBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = base64BBase.fEnumeration;
                   }
               }
  @@ -311,11 +307,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof Base64BinaryDatatypeValidator) {
                   ((Base64BinaryDatatypeValidator)fBaseValidator).checkContent(content, state, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
           }
   
           // we check pattern first
  @@ -393,10 +385,6 @@
           return newObj;
       }
   
  -    // Private methods
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
  -    }
   
   }
   
  
  
  
  1.9       +3 -21     xml-xerces/java/src/org/apache/xerces/validators/datatype/BooleanDatatypeValidator.java
  
  Index: BooleanDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/BooleanDatatypeValidator.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BooleanDatatypeValidator.java	2001/04/09 20:57:38	1.8
  +++ BooleanDatatypeValidator.java	2001/04/12 18:31:27	1.9
  @@ -71,16 +71,13 @@
    * @author Ted Leung
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version  $Id: BooleanDatatypeValidator.java,v 1.8 2001/04/09 20:57:38 elena Exp $
  + * @version  $Id: BooleanDatatypeValidator.java,v 1.9 2001/04/12 18:31:27 elena Exp $
    */
   
   public class BooleanDatatypeValidator extends AbstractDatatypeValidator {
       private Locale                  fLocale          = null;
  -    private String                  fPattern         = null;
  -    private int                     fFacetsDefined   = 0;
       private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
       private static  final String    fValueSpace[]    = { "false", "true", "0", "1"};
  -    private RegularExpression       fRegex           = null;
   
       public BooleanDatatypeValidator () throws InvalidDatatypeFacetException {
          this( null, null, false ); // Native, No Facets defined, Restriction
  @@ -88,7 +85,7 @@
   
       public BooleanDatatypeValidator ( DatatypeValidator base, Hashtable facets,
                    boolean derivedByList ) throws InvalidDatatypeFacetException {
  -        setBasetype( base ); // Set base type
  +        fBaseValidator = base; // Set base type
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -100,7 +97,7 @@
                   String key = (String) e.nextElement();
   
                   if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                          fRegex = new RegularExpression(fPattern, "X" );
  @@ -154,18 +151,7 @@
   
       //Begin private method definitions
   
  -    /**
  -     * Sets the base datatype name.
  -     *
  -     * @param base
  -     */
  -
  -    private  void setBasetype(DatatypeValidator base) {
  -        fBaseValidator = base;
  -    }
  -
   
  -
       private String getErrorString(int major, int minor, Object args[]) {
           try {
               return fMessageProvider.createMessage(fLocale, major, minor, args);
  @@ -192,11 +178,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof BooleanDatatypeValidator) {
                   ((BooleanDatatypeValidator)fBaseValidator).checkContent(content, true);
  -            } else {
  -                this.fBaseValidator.validate( content, null );
  -            }
           }
   
           // we check pattern first
  
  
  
  1.10      +17 -20    xml-xerces/java/src/org/apache/xerces/validators/datatype/DatatypeValidator.java
  
  Index: DatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/DatatypeValidator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DatatypeValidator.java	2001/04/09 20:57:38	1.9
  +++ DatatypeValidator.java	2001/04/12 18:31:27	1.10
  @@ -68,24 +68,24 @@
    * W3C to remove facets from the data type spec.
    * 
    * @author Jeffrey Rodriguez-
  - * @version $Id: DatatypeValidator.java,v 1.9 2001/04/09 20:57:38 elena Exp $
  + * @version $Id: DatatypeValidator.java,v 1.10 2001/04/12 18:31:27 elena Exp $
    */
   public interface DatatypeValidator {
  -    public static final int FACET_LENGTH       = 1;
  -    public static final int FACET_MINLENGTH    = 1<<1;
  -    public static final int FACET_MAXLENGTH    = 1<<2;
  -    public static final int FACET_PATTERN      = 1<<3; 
  -    public static final int FACET_ENUMERATION  = 1<<4;
  -    public static final int FACET_MAXINCLUSIVE = 1<<5;
  -    public static final int FACET_MAXEXCLUSIVE = 1<<6;
  -    public static final int FACET_MININCLUSIVE = 1<<7;
  -    public static final int FACET_MINEXCLUSIVE = 1<<8;
  -    public static final int FACET_TOTALDIGITS  = 1<<9;
  -    public static final int FACET_FRACTIONDIGITS = 1<<10;
  -    public static final int FACET_ENCODING     = 1<<11;
  -    public static final int FACET_DURATION     = 1<<12;
  -    public static final int FACET_PERIOD       = 1<<13;
  -    public static final int FACET_WHITESPACE   = 1<<14;
  +    public static final short FACET_LENGTH       = 0x1<<0;
  +    public static final short FACET_MINLENGTH    = 0x1<<1;
  +    public static final short FACET_MAXLENGTH    = 0x1<<2;
  +    public static final short FACET_PATTERN      = 0x1<<3; 
  +    public static final short FACET_ENUMERATION  = 0x1<<4;
  +    public static final short FACET_MAXINCLUSIVE = 0x1<<5;
  +    public static final short FACET_MAXEXCLUSIVE = 0x1<<6;
  +    public static final short FACET_MININCLUSIVE = 0x1<<7;
  +    public static final short FACET_MINEXCLUSIVE = 0x1<<8;
  +    public static final short FACET_TOTALDIGITS  = 0x1<<9;
  +    public static final short FACET_FRACTIONDIGITS = 0x1<<10;
  +    public static final short FACET_ENCODING     = 0x1<<11;
  +    public static final short FACET_DURATION     = 0x1<<12;
  +    public static final short FACET_PERIOD       = 0x1<<13;
  +    public static final short FACET_WHITESPACE   = 0x1<<14;
   
       //2.4.2.6 whiteSpace - Datatypes 
       public static final short PRESERVE = 0;
  @@ -100,10 +100,6 @@
        * If invalid a Datatype validation exception is thrown.
        * 
        * @param content A string containing the content to be validated
  -     * @param derivedBylist
  -     *                Flag which is true when type
  -     *                is derived by list otherwise it
  -     *                it is derived by extension.
        *                
        * @exception throws InvalidDatatypeException if the content is
        *                   invalid according to the rules for the validators
  @@ -113,6 +109,7 @@
       public Object validate(String content, Object state ) throws InvalidDatatypeValueException;
   
       public short getWSFacet ();
  +    
       /**
        * returns the datatype facet if any is set as a
        * Hashtable
  
  
  
  1.4       +8 -19     xml-xerces/java/src/org/apache/xerces/validators/datatype/DateTimeValidator.java
  
  Index: DateTimeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/DateTimeValidator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DateTimeValidator.java	2001/04/04 17:12:32	1.3
  +++ DateTimeValidator.java	2001/04/12 18:31:27	1.4
  @@ -72,7 +72,7 @@
    * @author Elena Litani
    * @author Len Berman  
    *
  - * @version $Id: DateTimeValidator.java,v 1.3 2001/04/04 17:12:32 elena Exp $
  + * @version $Id: DateTimeValidator.java,v 1.4 2001/04/12 18:31:27 elena Exp $
    */
   
   public abstract class DateTimeValidator extends AbstractDatatypeValidator {
  @@ -81,7 +81,6 @@
       private static final boolean DEBUG=false;
   
       //define facets allowed on schema date/time
  -    protected String fPattern      = null;
       protected int[]  fMaxInclusive = null;
       protected int[]  fMaxExclusive = null;
       protected int[]  fMinInclusive = null;
  @@ -90,8 +89,6 @@
       protected int  fEnumSize  = 0;
   
       //define shared variables for date/time
  -    protected RegularExpression fRegex = null;
  -    protected int fFacetsDefined = 0;
   
       //define constants
       protected final static int CY = 0,  M = 1, D = 2, h = 3, 
  @@ -152,7 +149,7 @@
       public DateTimeValidator (DatatypeValidator base, Hashtable facets, boolean derivedByList ) 
       throws InvalidDatatypeFacetException {
           if ( base != null ) {
  -            setBasetype( base ); // Set base type 
  +            fBaseValidator = base; // Set base type 
               fFacets = facets;
           }
   
  @@ -163,17 +160,17 @@
   
                   String key = (String) e.nextElement();
                   if ( key.equals(SchemaSymbols.ELT_PATTERN) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if ( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X" );
                   }
                   else if ( key.equals(SchemaSymbols.ELT_ENUMERATION) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       continue; //Treat the enumaration after this for loop
                   }
                   else if ( key.equals(SchemaSymbols.ELT_MAXINCLUSIVE) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXINCLUSIVE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXINCLUSIVE;
                       value = ((String)facets.get(key));
                       try {
                           fMaxInclusive = parse(value, null);
  @@ -184,7 +181,7 @@
                       }
                   }
                   else if ( key.equals(SchemaSymbols.ELT_MAXEXCLUSIVE) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXEXCLUSIVE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXEXCLUSIVE;
                       value  = ((String)facets.get(key));
                       try {
                           fMaxExclusive = parse(value, null);
  @@ -195,7 +192,7 @@
                       }
                   }
                   else if ( key.equals(SchemaSymbols.ELT_MININCLUSIVE) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MININCLUSIVE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MININCLUSIVE;
                       value  = ((String)facets.get(key));
                       try {
                           fMinInclusive = parse(value, null);
  @@ -206,7 +203,7 @@
                       }
                   }
                   else if ( key.equals(SchemaSymbols.ELT_MINEXCLUSIVE) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINEXCLUSIVE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINEXCLUSIVE;
                       value  = ((String)facets.get(key));
                       try {
                           fMinExclusive = parse(value, null);
  @@ -378,14 +375,6 @@
               return;
           }
   
  -    }
  -
  -    /**
  -     * set the base type for this datatype
  -     * @param base the validator for this type's base type
  -     */
  -    public void setBasetype(DatatypeValidator base) {
  -        fBaseValidator = base;
       }
   
       public int compare( String content1, String content2) {
  
  
  
  1.21      +4 -13     xml-xerces/java/src/org/apache/xerces/validators/datatype/DecimalDatatypeValidator.java
  
  Index: DecimalDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/DecimalDatatypeValidator.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- DecimalDatatypeValidator.java	2001/04/11 17:05:08	1.20
  +++ DecimalDatatypeValidator.java	2001/04/12 18:31:27	1.21
  @@ -75,7 +75,7 @@
    * @author Ted Leung
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: DecimalDatatypeValidator.java,v 1.20 2001/04/11 17:05:08 elena Exp $
  + * @version $Id: DecimalDatatypeValidator.java,v 1.21 2001/04/12 18:31:27 elena Exp $
    */
   
   public class DecimalDatatypeValidator extends AbstractDatatypeValidator {
  @@ -105,7 +105,7 @@
       public DecimalDatatypeValidator ( DatatypeValidator base, Hashtable facets,
                                         boolean derivedByList ) throws InvalidDatatypeFacetException {
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -287,7 +287,7 @@
                   }
               }
   
  -            if (base != null && base instanceof DecimalDatatypeValidator) {
  +            if (base != null) {
                   DecimalDatatypeValidator numBase = (DecimalDatatypeValidator)base;
   
                   // check 4.3.7.c2 error:
  @@ -491,11 +491,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof DecimalDatatypeValidator) {
  -                ((DecimalDatatypeValidator)fBaseValidator).checkContent(content, state, enumeration, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
  +            ((DecimalDatatypeValidator)fBaseValidator).checkContent(content, state, enumeration, true);
           }
   
           // we check pattern first
  @@ -670,11 +666,6 @@
               //REVISIT: should we throw exception??
               return -1;
           }
  -    }
  -
  -
  -    private void setBasetype(DatatypeValidator base) {
  -        fBaseValidator =  base;
       }
   
       /**
  
  
  
  1.18      +3 -15     xml-xerces/java/src/org/apache/xerces/validators/datatype/DoubleDatatypeValidator.java
  
  Index: DoubleDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/DoubleDatatypeValidator.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- DoubleDatatypeValidator.java	2001/04/11 17:05:09	1.17
  +++ DoubleDatatypeValidator.java	2001/04/12 18:31:28	1.18
  @@ -69,24 +69,21 @@
    * @author Ted Leung
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: DoubleDatatypeValidator.java,v 1.17 2001/04/11 17:05:09 elena Exp $
  + * @version $Id: DoubleDatatypeValidator.java,v 1.18 2001/04/12 18:31:28 elena Exp $
    */
   
   public class DoubleDatatypeValidator extends AbstractDatatypeValidator {
       private Locale            fLocale           = null;
       private double[]          fEnumDoubles      = null;
  -    private String            fPattern          = null;
       private double            fMaxInclusive     = Double.POSITIVE_INFINITY;
       private double            fMaxExclusive     = Double.POSITIVE_INFINITY;
       private double            fMinInclusive     = Double.NEGATIVE_INFINITY;
       private double            fMinExclusive     = Double.NEGATIVE_INFINITY;
  -    private int               fFacetsDefined    = 0;
   
       private boolean           isMaxExclusiveDefined = false;
       private boolean           isMaxInclusiveDefined = false;
       private boolean           isMinExclusiveDefined = false;
       private boolean           isMinInclusiveDefined = false;
  -    private RegularExpression      fRegex           = null;
   
       private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
   
  @@ -99,7 +96,7 @@
       public DoubleDatatypeValidator ( DatatypeValidator base, Hashtable facets,
                                        boolean derivedByList ) throws InvalidDatatypeFacetException  {
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -254,7 +251,7 @@
                   }
               }
   
  -            if (base != null && base instanceof DoubleDatatypeValidator) {
  +            if (base != null ) {
                   DoubleDatatypeValidator doubleBase = (DoubleDatatypeValidator)base;
   
                   // check 4.3.7.c2 error:
  @@ -413,11 +410,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof DoubleDatatypeValidator) {
                   ((DoubleDatatypeValidator)fBaseValidator).checkContent(content, state, enumeration, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
           }
   
           // we check pattern first
  @@ -585,11 +578,6 @@
           } catch (Exception e) {
               return "Illegal Errorcode "+minor;
           }
  -    }
  -
  -
  -    private void setBasetype(DatatypeValidator base) {
  -        fBaseValidator =  base;
       }
   
       private static double dValueOf(String s) throws NumberFormatException {
  
  
  
  1.19      +14 -27    xml-xerces/java/src/org/apache/xerces/validators/datatype/FloatDatatypeValidator.java
  
  Index: FloatDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/FloatDatatypeValidator.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FloatDatatypeValidator.java	2001/04/11 17:05:09	1.18
  +++ FloatDatatypeValidator.java	2001/04/12 18:31:28	1.19
  @@ -72,25 +72,22 @@
    * @author Ted Leung
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version  $Id: FloatDatatypeValidator.java,v 1.18 2001/04/11 17:05:09 elena Exp $
  + * @version  $Id: FloatDatatypeValidator.java,v 1.19 2001/04/12 18:31:28 elena Exp $
    */
   
   public class FloatDatatypeValidator extends AbstractDatatypeValidator {
       private Locale    fLocale                   = null;
       private float[]   fEnumFloats               = null;
  -    private String    fPattern                  = null;
       private float     fMaxInclusive             = Float.POSITIVE_INFINITY ;
       private float     fMaxExclusive             = Float.POSITIVE_INFINITY;
       private float     fMinInclusive             = Float.NEGATIVE_INFINITY;
       private float     fMinExclusive             = Float.NEGATIVE_INFINITY;
  -    private int       fFacetsDefined            = 0;
   
       private boolean   isMaxExclusiveDefined             = false;
       private boolean   isMaxInclusiveDefined             = false;
       private boolean   isMinExclusiveDefined             = false;
       private boolean   isMinInclusiveDefined             = false;
       private DatatypeMessageProvider fMessageProvider    = new DatatypeMessageProvider();
  -    private RegularExpression      fRegex               = null;
   
   
       public FloatDatatypeValidator () throws InvalidDatatypeFacetException{
  @@ -100,7 +97,7 @@
       public FloatDatatypeValidator ( DatatypeValidator base, Hashtable facets,
                                       boolean derivedByList ) throws InvalidDatatypeFacetException {
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -114,30 +111,30 @@
                   String value = null;
                   try {
                       if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                        fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                           fPattern = (String)facets.get(key);
                           if ( fPattern != null )
                               fRegex = new RegularExpression(fPattern, "X" );
                       } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                        fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                           enumeration = (Vector)facets.get(key);
                       } else if (key.equals(SchemaSymbols.ELT_MAXINCLUSIVE)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXINCLUSIVE;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXINCLUSIVE;
                           value  = ((String)facets.get(key));
                           isMaxInclusiveDefined = true;
                           fMaxInclusive = fValueOf(value);
                       } else if (key.equals(SchemaSymbols.ELT_MAXEXCLUSIVE)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXEXCLUSIVE;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXEXCLUSIVE;
                           value  = ((String)facets.get(key));
                           isMaxExclusiveDefined = true;
                           fMaxExclusive = fValueOf(value);
                       } else if (key.equals(SchemaSymbols.ELT_MININCLUSIVE)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MININCLUSIVE;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MININCLUSIVE;
                           value  = ((String)facets.get(key));
                           isMinInclusiveDefined = true;
                           fMinInclusive  = fValueOf(value);
                       } else if (key.equals(SchemaSymbols.ELT_MINEXCLUSIVE)) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINEXCLUSIVE;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINEXCLUSIVE;
                           value  = ((String)facets.get(key));
                           isMinExclusiveDefined = true;
                           fMinExclusive  = fValueOf(value);
  @@ -255,7 +252,7 @@
                   }
               }
   
  -            if (base != null && base instanceof FloatDatatypeValidator) {
  +            if (base != null) {
                   FloatDatatypeValidator floatBase = (FloatDatatypeValidator)base;
   
                   // check 4.3.7.c2 error:
  @@ -345,35 +342,35 @@
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (floatBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumFloats = floatBase.fEnumFloats;
                   }
                   // inherit maxExclusive
                   if ( floatBase.isMaxExclusiveDefined &&
                        !isMaxExclusiveDefined && !isMaxInclusiveDefined ) {
                       isMaxExclusiveDefined = true;
  -                    fFacetsDefined += FACET_MAXEXCLUSIVE;
  +                    fFacetsDefined |= FACET_MAXEXCLUSIVE;
                       fMaxExclusive = floatBase.fMaxExclusive;
                   }
                   // inherit maxInclusive
                   if ( floatBase.isMaxInclusiveDefined &&
                        !isMaxExclusiveDefined && !isMaxInclusiveDefined ) {
                       isMaxInclusiveDefined = true;
  -                    fFacetsDefined += FACET_MAXINCLUSIVE;
  +                    fFacetsDefined |= FACET_MAXINCLUSIVE;
                       fMaxInclusive = floatBase.fMaxInclusive;
                   }
                   // inherit minExclusive
                   if ( floatBase.isMinExclusiveDefined &&
                        !isMinExclusiveDefined && !isMinInclusiveDefined ) {
                       isMinExclusiveDefined = true;
  -                    fFacetsDefined += FACET_MINEXCLUSIVE;
  +                    fFacetsDefined |= FACET_MINEXCLUSIVE;
                       fMinExclusive = floatBase.fMinExclusive;
                   }
                   // inherit minExclusive
                   if ( floatBase.isMinInclusiveDefined &&
                        !isMinExclusiveDefined && !isMinInclusiveDefined ) {
                       isMinInclusiveDefined = true;
  -                    fFacetsDefined += FACET_MININCLUSIVE;
  +                    fFacetsDefined |= FACET_MININCLUSIVE;
                       fMinInclusive = floatBase.fMinInclusive;
                   }
               }
  @@ -422,11 +419,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof FloatDatatypeValidator) {
                   ((FloatDatatypeValidator)fBaseValidator).checkContent(content, state, enumeration, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
           }
   
           // we check pattern first
  @@ -597,12 +590,6 @@
               return "Illegal Errorcode "+minor;
           }
       }
  -
  -
  -    private void setBasetype(DatatypeValidator base) {
  -        fBaseValidator =  base;
  -    }
  -
   
       private static float fValueOf(String s) throws NumberFormatException {
           float f;
  
  
  
  1.2       +14 -28    xml-xerces/java/src/org/apache/xerces/validators/datatype/HexBinaryDatatypeValidator.java
  
  Index: HexBinaryDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/HexBinaryDatatypeValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HexBinaryDatatypeValidator.java	2001/04/09 20:57:39	1.1
  +++ HexBinaryDatatypeValidator.java	2001/04/12 18:31:29	1.2
  @@ -72,21 +72,15 @@
    * @author Kito D. Mann, Virtua Communications Corp.
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: HexBinaryDatatypeValidator.java,v 1.1 2001/04/09 20:57:39 elena Exp $
  + * @version $Id: HexBinaryDatatypeValidator.java,v 1.2 2001/04/12 18:31:29 elena Exp $
    */
   public class HexBinaryDatatypeValidator extends AbstractDatatypeValidator{
  +    
       private Locale     fLocale          = null;
  -
       private int        fLength          = 0;
       private int        fMaxLength       = Integer.MAX_VALUE;
       private int        fMinLength       = 0;
  -    private String     fPattern         = null;
       private Vector     fEnumeration     = null;
  -    private int        fFacetsDefined   = 0;
  -    private RegularExpression fRegex    = null;
  -
  -
  -
   
       public  HexBinaryDatatypeValidator () throws InvalidDatatypeFacetException{
           this( null, null, false ); // Native, No Facets defined, Restriction
  @@ -97,7 +91,7 @@
                                           boolean derivedByList ) throws InvalidDatatypeFacetException {
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -109,7 +103,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -121,7 +115,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -133,7 +127,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -146,13 +140,13 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
                   }
  @@ -193,7 +187,7 @@
               }
   
               // if base type is string, check facets against base.facets, and inherit facets from base
  -            if (base != null && base instanceof HexBinaryDatatypeValidator) {
  +            if (base != null) {
                   HexBinaryDatatypeValidator hexBBase = (HexBinaryDatatypeValidator)base;
   
                   // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  @@ -257,28 +251,28 @@
                   // inherit length
                   if ( (hexBBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = hexBBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (hexBBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = hexBBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (hexBBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = hexBBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (hexBBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = hexBBase.fEnumeration;
                   }
               }
  @@ -313,11 +307,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof HexBinaryDatatypeValidator) {
  -                ((HexBinaryDatatypeValidator)fBaseValidator).checkContent(content, state, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
  +            ((HexBinaryDatatypeValidator)fBaseValidator).checkContent(content, state, true);
           }
   
           // we check pattern first
  @@ -396,10 +386,6 @@
           return newObj;
       }
   
  -    // Private methods
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
  -    }
   
   }
   
  
  
  
  1.8       +7 -17     xml-xerces/java/src/org/apache/xerces/validators/datatype/ListDatatypeValidator.java
  
  Index: ListDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/ListDatatypeValidator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ListDatatypeValidator.java	2001/03/28 21:42:38	1.7
  +++ ListDatatypeValidator.java	2001/04/12 18:31:29	1.8
  @@ -73,22 +73,17 @@
    * @author  Elena Litani
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: ListDatatypeValidator.java,v 1.7 2001/03/28 21:42:38 neilg Exp $
  + * @version $Id: ListDatatypeValidator.java,v 1.8 2001/04/12 18:31:29 elena Exp $
    */
   public class ListDatatypeValidator extends AbstractDatatypeValidator{
  +    
       private Locale     fLocale          = null;
  -    // moved to AbstractDatatypeValidator
  -    // DatatypeValidator  fBaseValidator   = null; // Native datatypes have null
  -
       private int        fLength           = 0;
       private int        fMaxLength        = Integer.MAX_VALUE;
       private int        fMinLength        = 0;
  -    private String     fPattern          = null;
       private Vector     fEnumeration      = null;
  -    private int        fFacetsDefined    = 0;
       private boolean    fDerivedByList    = false; //false: derivation by restriction
                                                     //true: list decl
  -    private RegularExpression fRegex         = null;
   
       
   
  @@ -100,7 +95,7 @@
       public ListDatatypeValidator ( DatatypeValidator base, Hashtable facets, 
       boolean derivedByList ) throws InvalidDatatypeFacetException {
   
  -        setBasetype( base ); // Set base type 
  +        fBaseValidator = base; // Set base type 
   
           fDerivedByList = derivedByList;
   
  @@ -108,7 +103,7 @@
               for (Enumeration e = facets.keys(); e.hasMoreElements();) {
                   String key = (String) e.nextElement();
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -119,7 +114,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -127,7 +122,7 @@
                           throw new InvalidDatatypeFacetException("maxLength value '"+minLengthValue+"' is invalid.");
                       }
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -135,7 +130,7 @@
                           throw new InvalidDatatypeFacetException("maxLength value '"+maxLengthValue+"' is invalid.");
                       }
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration    = (Vector)facets.get(key);
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
  @@ -409,11 +404,6 @@
           return true;
       }
   
  -
  -    
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
  -    }
   
   }
   
  
  
  
  1.8       +15 -34    xml-xerces/java/src/org/apache/xerces/validators/datatype/NOTATIONDatatypeValidator.java
  
  Index: NOTATIONDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/NOTATIONDatatypeValidator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- NOTATIONDatatypeValidator.java	2001/04/09 20:57:40	1.7
  +++ NOTATIONDatatypeValidator.java	2001/04/12 18:31:29	1.8
  @@ -72,18 +72,15 @@
    * @author Elena Litani
    * @author Jeffrey Rodriguez-
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: NOTATIONDatatypeValidator.java,v 1.7 2001/04/09 20:57:40 elena Exp $
  + * @version $Id: NOTATIONDatatypeValidator.java,v 1.8 2001/04/12 18:31:29 elena Exp $
    */
   public class NOTATIONDatatypeValidator extends AbstractDatatypeValidator {
  +    
       private Locale     fLocale          = null;
  -
       private int        fLength          = 0;
       private int        fMaxLength       = Integer.MAX_VALUE;
       private int        fMinLength       = 0;
  -    private String     fPattern         = null;
       private Vector     fEnumeration     = null;
  -    private int        fFacetsDefined   = 0;
  -    private RegularExpression fRegex    = null;
   
       // for the QName validator
       private static StringDatatypeValidator fgStrValidator  = null;
  @@ -106,7 +103,7 @@
           }
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -118,7 +115,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -130,7 +127,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -142,7 +139,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -155,13 +152,13 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
                   }
  @@ -169,8 +166,7 @@
   
               if ( base != null ) {
                   // check 2.3.19.c1 must: derived NOTATION
  -                if ( base instanceof NOTATIONDatatypeValidator &&
  -                     ((NOTATIONDatatypeValidator)base).fBaseValidator == null) {
  +                if ( ((NOTATIONDatatypeValidator)base).fBaseValidator == null) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 )
                           throw new InvalidDatatypeFacetException( "Enumeration facet is required data types directly derived from NOTATION.");
                   }
  @@ -209,7 +205,7 @@
               }
   
               // if base type is string, check facets against base.facets, and inherit facets from base
  -            if (base != null && base instanceof NOTATIONDatatypeValidator) {
  +            if (base != null) {
                   NOTATIONDatatypeValidator notationBase = (NOTATIONDatatypeValidator)base;
   
                   // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  @@ -273,28 +269,28 @@
                   // inherit length
                   if ( (notationBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = notationBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (notationBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = notationBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (notationBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = notationBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (notationBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = notationBase.fEnumeration;
                   }
               }
  @@ -327,11 +323,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof NOTATIONDatatypeValidator) {
  -                ((NOTATIONDatatypeValidator)fBaseValidator).checkContent(content, state, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
  +           ((NOTATIONDatatypeValidator)fBaseValidator).checkContent(content, state, true);
           }
   
           // we check pattern first
  @@ -400,15 +392,4 @@
           throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
       }
   
  -    /**
  -     * Name of base type as a string.
  -     * A Native datatype has the string "native"  as its
  -     * base type.
  -     *
  -     * @param base   the validator for this type's base type
  -     */
  -
  -    private void setBasetype(DatatypeValidator base){
  -        fBaseValidator = base;
  -    }
   }
  
  
  
  1.10      +13 -24    xml-xerces/java/src/org/apache/xerces/validators/datatype/QNameDatatypeValidator.java
  
  Index: QNameDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/QNameDatatypeValidator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- QNameDatatypeValidator.java	2001/04/09 20:57:40	1.9
  +++ QNameDatatypeValidator.java	2001/04/12 18:31:29	1.10
  @@ -77,18 +77,15 @@
    *
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: QNameDatatypeValidator.java,v 1.9 2001/04/09 20:57:40 elena Exp $
  + * @version $Id: QNameDatatypeValidator.java,v 1.10 2001/04/12 18:31:29 elena Exp $
    */
   public class QNameDatatypeValidator extends  AbstractDatatypeValidator {
  +    
       private Locale    fLocale          = null;
  -
       private int       fLength          = 0;
       private int       fMaxLength       = Integer.MAX_VALUE;
       private int       fMinLength       = 0;
  -    private String    fPattern         = null;
       private Vector    fEnumeration     = null;
  -    private int       fFacetsDefined   = 0;
  -    private RegularExpression fRegex   = null;
   
       // for the NCName validator
       private static StringDatatypeValidator  fgStrValidator  = null;
  @@ -109,7 +106,7 @@
           }
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -121,7 +118,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -133,7 +130,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -145,7 +142,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -158,13 +155,13 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else {
                       throw new InvalidDatatypeFacetException("invalid facet tag : " + key);
                   }
  @@ -205,7 +202,7 @@
               }
   
               // if base type is string, check facets against base.facets, and inherit facets from base
  -            if (base != null && base instanceof QNameDatatypeValidator) {
  +            if (base != null) {
                   QNameDatatypeValidator qNameBase = (QNameDatatypeValidator)base;
   
                   // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  @@ -269,28 +266,28 @@
                   // inherit length
                   if ( (qNameBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = qNameBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (qNameBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = qNameBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (qNameBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = qNameBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (qNameBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = qNameBase.fEnumeration;
                   }
               }
  @@ -324,11 +321,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof QNameDatatypeValidator) {
                   ((QNameDatatypeValidator)fBaseValidator).checkContent(content, true);
  -            } else {
  -                this.fBaseValidator.validate( content, null );
  -            }
           }
   
           // we check pattern first
  @@ -394,9 +387,5 @@
          */
       public Object clone() throws CloneNotSupportedException {
           throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
  -    }
  -
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
       }
   }
  
  
  
  1.25      +17 -35    xml-xerces/java/src/org/apache/xerces/validators/datatype/StringDatatypeValidator.java
  
  Index: StringDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/StringDatatypeValidator.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- StringDatatypeValidator.java	2001/04/09 20:57:40	1.24
  +++ StringDatatypeValidator.java	2001/04/12 18:31:29	1.25
  @@ -71,23 +71,17 @@
    * @author Kito D. Mann, Virtua Communications Corp.
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: StringDatatypeValidator.java,v 1.24 2001/04/09 20:57:40 elena Exp $
  + * @version $Id: StringDatatypeValidator.java,v 1.25 2001/04/12 18:31:29 elena Exp $
    */
   public class StringDatatypeValidator extends AbstractDatatypeValidator{
  +    
       private Locale     fLocale          = null;
  -
       private int        fLength          = 0;
       private int        fMaxLength       = Integer.MAX_VALUE;
       private int        fMinLength       = 0;
  -    private String     fPattern         = null;
       private Vector     fEnumeration     = null;
  -    private int        fFacetsDefined   = 0;
       private short      fWhiteSpace      = DatatypeValidator.PRESERVE;
  -    private RegularExpression fRegex    = null;
  -
  -
   
  -
       public  StringDatatypeValidator () throws InvalidDatatypeFacetException{
           this( null, null, false ); // Native, No Facets defined, Restriction
   
  @@ -97,7 +91,7 @@
                                        boolean derivedByList ) throws InvalidDatatypeFacetException {
   
            // Set base type
  -        setBasetype( base );
  +        fBaseValidator = base;
   
           // list types are handled by ListDatatypeValidator, we do nothing here.
           if ( derivedByList )
  @@ -109,7 +103,7 @@
                   String key = (String) e.nextElement();
   
                   if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                       String lengthValue = (String)facets.get(key);
                       try {
                           fLength     = Integer.parseInt( lengthValue );
  @@ -121,7 +115,7 @@
                           throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MINLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                       String minLengthValue = (String)facets.get(key);
                       try {
                           fMinLength     = Integer.parseInt( minLengthValue );
  @@ -133,7 +127,7 @@
                           throw new InvalidDatatypeFacetException("minLength value '"+minLengthValue+"'  must be a nonNegativeInteger.");
   
                   } else if (key.equals(SchemaSymbols.ELT_MAXLENGTH) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                    fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                       String maxLengthValue = (String)facets.get(key);
                       try {
                           fMaxLength     = Integer.parseInt( maxLengthValue );
  @@ -146,15 +140,15 @@
   
   
                   } else if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       if( fPattern != null )
                           fRegex = new RegularExpression(fPattern, "X");
                   } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                       fEnumeration = (Vector)facets.get(key);
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                   } else if (key.equals(SchemaSymbols.ELT_WHITESPACE)) {
  -                    fFacetsDefined += DatatypeValidator.FACET_WHITESPACE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_WHITESPACE;
                       String ws = (String)facets.get(key);
                       // check 4.3.6.c0 must:
                       // whiteSpace = preserve || whiteSpace = replace || whiteSpace = collapse
  @@ -182,11 +176,8 @@
                        (fEnumeration != null) ) {
                       int i = 0;
                       try {
  -                        for ( ; i < fEnumeration.size(); i++) {
  -                            if (base instanceof StringDatatypeValidator)
  -                                ((StringDatatypeValidator)base).checkContent ((String)fEnumeration.elementAt(i), null, false);
  -                            else
  -                                base.validate ((String)fEnumeration.elementAt(i), null);
  +                        for ( ; i < fEnumeration.size(); i++){
  +                           ((StringDatatypeValidator)base).checkContent ((String)fEnumeration.elementAt(i), null, false);
                           }
                       } catch ( Exception idve ){
                           throw new InvalidDatatypeFacetException( "Value of enumeration = '" + fEnumeration.elementAt(i) +
  @@ -214,7 +205,7 @@
               }
   
               // if base type is string, check facets against base.facets, and inherit facets from base
  -            if (base != null && base instanceof StringDatatypeValidator) {
  +            if (base != null) {
                   StringDatatypeValidator strBase = (StringDatatypeValidator)base;
   
                   // check 4.3.1.c1 error: length & (base.maxLength | base.minLength)
  @@ -292,34 +283,34 @@
                   // inherit length
                   if ( (strBase.fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_LENGTH;
                           fLength = strBase.fLength;
                       }
                   }
                   // inherit minLength
                   if ( (strBase.fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MINLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MINLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MINLENGTH;
                           fMinLength = strBase.fMinLength;
                       }
                   }
                   // inherit maxLength
                   if ( (strBase.fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
                       if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) == 0 ) {
  -                        fFacetsDefined += DatatypeValidator.FACET_MAXLENGTH;
  +                        fFacetsDefined |= DatatypeValidator.FACET_MAXLENGTH;
                           fMaxLength = strBase.fMaxLength;
                       }
                   }
                   // inherit enumeration
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) == 0 &&
                        (strBase.fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration = strBase.fEnumeration;
                   }
                   // inherit whiteSpace
                   if ( (fFacetsDefined & DatatypeValidator.FACET_WHITESPACE) == 0 &&
                        (strBase.fFacetsDefined & DatatypeValidator.FACET_WHITESPACE) != 0 ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_WHITESPACE;
  +                    fFacetsDefined |= DatatypeValidator.FACET_WHITESPACE;
                       fWhiteSpace = strBase.fWhiteSpace;
                   }
               }
  @@ -361,11 +352,7 @@
           // validate against parent type if any
           if ( this.fBaseValidator != null ) {
               // validate content as a base type
  -            if (fBaseValidator instanceof StringDatatypeValidator) {
                   ((StringDatatypeValidator)fBaseValidator).checkContent(content, state, true);
  -            } else {
  -                this.fBaseValidator.validate( content, state );
  -            }
           }
   
           // we check pattern first
  @@ -438,11 +425,6 @@
               ex.printStackTrace();
           }
           return newObj;
  -    }
  -
  -    // Private methods
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
       }
   
   }
  
  
  
  1.7       +6 -16     xml-xerces/java/src/org/apache/xerces/validators/datatype/UnionDatatypeValidator.java
  
  Index: UnionDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/UnionDatatypeValidator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UnionDatatypeValidator.java	2001/03/29 21:13:38	1.6
  +++ UnionDatatypeValidator.java	2001/04/12 18:31:29	1.7
  @@ -77,17 +77,12 @@
    * Implements the September 22 XML Schema datatype Union Datatype type
    */
   public class UnionDatatypeValidator extends AbstractDatatypeValidator {
  -    private Locale     fLocale          = null;
  -    private Vector  fBaseValidators   = null;             // union collection of validators
  -    // moved to AbstractDatatypeValidator
  -    // private DatatypeValidator  fBaseValidator   = null;   // Native datatypes have null
  +    
  +    private Locale  fLocale          = null;
  +    private Vector  fBaseValidators   = null; // union collection of validators
       private int fValidatorsSize = 0;
  -    private String     fPattern          = null;
       private Vector     fEnumeration      = null;
  -    private int        fFacetsDefined    = 0;
  -
       private StringBuffer errorMsg = null;   
  -    private RegularExpression fRegex         = null;
   
   
       public  UnionDatatypeValidator () throws InvalidDatatypeFacetException{
  @@ -97,17 +92,17 @@
   
   
       public UnionDatatypeValidator ( DatatypeValidator base, Hashtable facets, boolean derivedBy ) throws InvalidDatatypeFacetException {
  -        setBasetype( base );  
  +        fBaseValidator = base;  
           //facets allowed are: pattern & enumeration
           if ( facets != null ) {
               for ( Enumeration e = facets.keys(); e.hasMoreElements(); ) {
                   String key = (String) e.nextElement();
                   if ( key.equals(SchemaSymbols.ELT_ENUMERATION) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  +                    fFacetsDefined |= DatatypeValidator.FACET_ENUMERATION;
                       fEnumeration    = (Vector)facets.get(key);
                   }
                   else if ( key.equals(SchemaSymbols.ELT_PATTERN) ) {
  -                    fFacetsDefined += DatatypeValidator.FACET_PATTERN;
  +                    fFacetsDefined |= DatatypeValidator.FACET_PATTERN;
                       fPattern = (String)facets.get(key);
                       fRegex   = new RegularExpression(fPattern, "X");
   
  @@ -323,11 +318,6 @@
           if ( !valid ) {
               throw new InvalidDatatypeValueException( "Content '"+content+"' does not match any union types" );  
           }
  -    }
  -
  -
  -    private void setBasetype( DatatypeValidator base) {
  -        fBaseValidator = base;
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org