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/05/03 21:57:57 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/validators/datatype DateTimeValidator.java ENTITYDatatypeValidator.java IDDatatypeValidator.java IDREFDatatypeValidator.java ListDatatypeValidator.java Makefile UnionDatatypeValidator.java

elena       01/05/03 12:57:56

  Modified:    java/src/org/apache/xerces/validators/datatype
                        DateTimeValidator.java ENTITYDatatypeValidator.java
                        IDDatatypeValidator.java
                        IDREFDatatypeValidator.java
                        ListDatatypeValidator.java Makefile
                        UnionDatatypeValidator.java
  Log:
  Datatype constraints checking  (Sandy Gao) & date/time updates
  
  Revision  Changes    Path
  1.8       +4 -4      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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DateTimeValidator.java	2001/04/25 20:41:57	1.7
  +++ DateTimeValidator.java	2001/05/03 19:57:32	1.8
  @@ -72,7 +72,7 @@
    * @author Elena Litani
    * @author Len Berman  
    *
  - * @version $Id: DateTimeValidator.java,v 1.7 2001/04/25 20:41:57 elena Exp $
  + * @version $Id: DateTimeValidator.java,v 1.8 2001/05/03 19:57:32 elena Exp $
    */
   
   public abstract class DateTimeValidator extends AbstractNumericFacetValidator {
  @@ -389,7 +389,7 @@
               timeZone[hh]=14;
               timeZone[mm]=0;
   
  -            fTempDate[utc]='+';
  +            fTempDate[utc]='-';
               if (DEBUG) {
                  System.out.println("fTempDate=" + dateToString(fTempDate));
               }
  @@ -404,7 +404,7 @@
               cloneDate(date1); //clones date1 value to global temporary storage: fTempDate
               timeZone[hh]=14;
               timeZone[mm]=0;
  -            fTempDate[utc]='-';
  +            fTempDate[utc]='+';
               normalize(fTempDate);
               c2 = compareOrder(fTempDate, date2);
               if (DEBUG) {
  @@ -744,7 +744,7 @@
   
           //add minutes (from time zone)
           int negate = 1;
  -        if (date[utc]=='-') {
  +        if (date[utc]=='+') {
               negate = -1;
           }
           if ( DEBUG ) {
  
  
  
  1.10      +17 -2     xml-xerces/java/src/org/apache/xerces/validators/datatype/ENTITYDatatypeValidator.java
  
  Index: ENTITYDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/ENTITYDatatypeValidator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ENTITYDatatypeValidator.java	2001/04/26 16:27:57	1.9
  +++ ENTITYDatatypeValidator.java	2001/05/03 19:57:36	1.10
  @@ -58,6 +58,7 @@
   package org.apache.xerces.validators.datatype;
   
   import java.util.Hashtable;
  +import java.util.Vector;
   import org.apache.xerces.readers.DefaultEntityHandler;
   import org.apache.xerces.utils.XMLMessages;
   import org.apache.xerces.utils.StringPool;
  @@ -104,7 +105,7 @@
    *
    * @author Jeffrey Rodriguez-
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: ENTITYDatatypeValidator.java,v 1.9 2001/04/26 16:27:57 elena Exp $
  + * @version $Id: ENTITYDatatypeValidator.java,v 1.10 2001/05/03 19:57:36 elena Exp $
    * @see org.apache.xerces.validators.datatype.DatatypeValidator
    * @see org.apache.xerces.validators.datatype.DatatypeValidatorFactoryImpl
    * @see org.apache.xerces.validators.datatype.DatatypeValidatorFactory
  @@ -141,9 +142,23 @@
           }
   
           // inherit entity handler and string pool from base validator
  -        if (base != null && base instanceof ENTITYDatatypeValidator) {
  +        if (base != null) {
               this.fEntityHandler = ((ENTITYDatatypeValidator)base).fEntityHandler;
               this.fStringPool = ((ENTITYDatatypeValidator)base).fStringPool;
  +        }
  +
  +        Vector enum = null;
  +        if (facets != null)
  +            enum = (Vector)facets.get(SchemaSymbols.ELT_ENUMERATION);
  +        if (enum != null) {
  +            int i = 0;
  +            try {
  +                for ( ; i < enum.size(); i++)
  +                    fgStrValidator.validate((String)enum.elementAt(i), null);
  +            } catch ( Exception idve ){
  +                throw new InvalidDatatypeFacetException( "Value of enumeration = '" + enum.elementAt(i) +
  +                                                         "' must be from the value space of base.");
  +            }
           }
       }
   
  
  
  
  1.19      +16 -1     xml-xerces/java/src/org/apache/xerces/validators/datatype/IDDatatypeValidator.java
  
  Index: IDDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/IDDatatypeValidator.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- IDDatatypeValidator.java	2001/04/10 17:17:19	1.18
  +++ IDDatatypeValidator.java	2001/05/03 19:57:38	1.19
  @@ -59,6 +59,7 @@
   
   import java.util.Hashtable;
   import java.util.Enumeration;
  +import java.util.Vector;
   import org.apache.xerces.utils.XMLCharacterProperties;
   import org.apache.xerces.utils.XMLMessages;
   import org.apache.xerces.validators.schema.SchemaSymbols;
  @@ -69,7 +70,7 @@
    * standalone code as well as plugins to the validator architecture.
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: IDDatatypeValidator.java,v 1.18 2001/04/10 17:17:19 elena Exp $
  + * @version $Id: IDDatatypeValidator.java,v 1.19 2001/05/03 19:57:38 elena Exp $
    */
   public class IDDatatypeValidator extends StringDatatypeValidator {
       private static StringDatatypeValidator  fgStrValidator  = null;
  @@ -100,6 +101,20 @@
               strFacets.put(SchemaSymbols.ELT_WHITESPACE, SchemaSymbols.ATT_COLLAPSE);
               strFacets.put(SchemaSymbols.ELT_PATTERN , "[\\i-[:]][\\c-[:]]*"  );
               fgStrValidator = new StringDatatypeValidator (null, strFacets, false);
  +        }
  +
  +        Vector enum = null;
  +        if (facets != null)
  +            enum = (Vector)facets.get(SchemaSymbols.ELT_ENUMERATION);
  +        if (enum != null) {
  +            int i = 0;
  +            try {
  +                for ( ; i < enum.size(); i++)
  +                    fgStrValidator.validate((String)enum.elementAt(i), null);
  +            } catch ( Exception idve ){
  +                throw new InvalidDatatypeFacetException( "Value of enumeration = '" + enum.elementAt(i) +
  +                                                         "' must be from the value space of base.");
  +            }
           }
       }
   
  
  
  
  1.18      +17 -2     xml-xerces/java/src/org/apache/xerces/validators/datatype/IDREFDatatypeValidator.java
  
  Index: IDREFDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/IDREFDatatypeValidator.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- IDREFDatatypeValidator.java	2001/04/18 16:00:19	1.17
  +++ IDREFDatatypeValidator.java	2001/05/03 19:57:40	1.18
  @@ -59,6 +59,7 @@
   
   import java.util.Hashtable;
   import java.util.Enumeration;
  +import java.util.Vector;
   import org.apache.xerces.utils.XMLCharacterProperties;
   import org.apache.xerces.utils.XMLMessages;
   import org.apache.xerces.validators.schema.SchemaSymbols;
  @@ -70,7 +71,7 @@
    *
    * @author Jeffrey Rodriguez-
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: IDREFDatatypeValidator.java,v 1.17 2001/04/18 16:00:19 elena Exp $
  + * @version $Id: IDREFDatatypeValidator.java,v 1.18 2001/05/03 19:57:40 elena Exp $
    */
   public class IDREFDatatypeValidator extends StringDatatypeValidator {
       private static StringDatatypeValidator  fgStrValidator  = null;
  @@ -104,6 +105,20 @@
               strFacets.put(SchemaSymbols.ELT_PATTERN , "[\\i-[:]][\\c-[:]]*"  );
               fgStrValidator = new StringDatatypeValidator (null, strFacets, false);
           }
  +
  +        Vector enum = null;
  +        if (facets != null)
  +            enum = (Vector)facets.get(SchemaSymbols.ELT_ENUMERATION);
  +        if (enum != null) {
  +            int i = 0;
  +            try {
  +                for ( ; i < enum.size(); i++)
  +                    fgStrValidator.validate((String)enum.elementAt(i), null);
  +            } catch ( Exception idve ){
  +                throw new InvalidDatatypeFacetException( "Value of enumeration = '" + enum.elementAt(i) +
  +                                                         "' must be from the value space of base.");
  +            }
  +        }
       }
   
       /**
  @@ -157,7 +172,7 @@
           try {
               fgStrValidator.validate(content, null);
           } catch (InvalidDatatypeValueException idve) {
  -            InvalidDatatypeValueException error =  new InvalidDatatypeValueException( "ID is not valid: " + content );
  +            InvalidDatatypeValueException error =  new InvalidDatatypeValueException( "IDREF is not valid: " + content );
               error.setMinorCode(XMLMessages.MSG_IDREF_INVALID);
               error.setMajorCode(XMLMessages.VC_IDREF);
               throw error;
  
  
  
  1.10      +29 -12    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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ListDatatypeValidator.java	2001/04/25 20:42:05	1.9
  +++ ListDatatypeValidator.java	2001/05/03 19:57:41	1.10
  @@ -70,7 +70,7 @@
    * @author  Elena Litani
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: ListDatatypeValidator.java,v 1.9 2001/04/25 20:42:05 elena Exp $
  + * @version $Id: ListDatatypeValidator.java,v 1.10 2001/05/03 19:57:41 elena Exp $
    */
   public class ListDatatypeValidator extends AbstractDatatypeValidator{
       
  @@ -145,6 +145,24 @@
                       "must be greater that the value of maxLength" + fMaxLength );
                   }
               }
  +
  +            // check 4.3.5.c0 must: enumeration values from the value space of base
  +            //REVISIT: we should try either to delay it till validate() or
  +            //         store enumeration values in _value_space 
  +            //         otherwise we end up creating and throwing objects  
  +            if ( base != null &&
  +                (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 &&
  +                (fEnumeration != null) ) {
  +                int i = 0;
  +                try {
  +                    for (; i < fEnumeration.size(); i++) {
  +                        base.validate ((String)fEnumeration.elementAt(i), null);
  +                    }
  +                } catch ( Exception idve ){
  +                    throw new InvalidDatatypeFacetException( "Value of enumeration = '" + fEnumeration.elementAt(i) +
  +                                                             "' must be from the value space of base.");
  +                }
  +            }
           }// End of Facets Setting
       }
   
  @@ -246,9 +264,10 @@
               
               //REVISIT: attemt to make enumeration to be validated against value space.
               //a redesign of Datatypes might help to reduce complexity of this validation
  -        StringTokenizer parsedList = new StringTokenizer( content );
  -        int numberOfTokens = parsedList.countTokens();         
  -        if (fBaseValidator instanceof ListDatatypeValidator) { 
  +        
  +         StringTokenizer parsedList = new StringTokenizer( content );
  +         int numberOfTokens = parsedList.countTokens();         
  +         if (fBaseValidator instanceof ListDatatypeValidator) { 
               //<simpleType name="fRestriction"><restriction base="fList">...</restriction></simpleType>
               try {
                   if ( (fFacetsDefined & DatatypeValidator.FACET_MAXLENGTH) != 0 ) {
  @@ -294,6 +313,7 @@
           else { 
               //the case:
               //<simpleType name="fList"><list itemType="float"/></simpleType>
  +            
               if (enumeration !=null) {
                   StringTokenizer eTokens = null; //temporary list of enumeration tokens 
                   StringTokenizer cTokens = null; //list of content tokens
  @@ -310,7 +330,8 @@
                       currentEnumeration = (String)enumeration.elementAt(i);
                       eTokens = new StringTokenizer (currentEnumeration);
                       valid = true;
  -                    cTokens=parsedList;
  +
  +                    cTokens = (i==0)?parsedList:new StringTokenizer( content );
                       
                       if (numberOfTokens == eTokens.countTokens()) {
                           try {
  @@ -326,13 +347,9 @@
                                       token = cTokens.nextToken();
                                       eToken = eTokens.nextToken();
                                       enumTemp.setElementAt(eToken,0);
  -                                    //REVISIT: RecurringDuration..
  -                                    if (fBaseValidator instanceof DecimalDatatypeValidator) {
  -                                        ((DecimalDatatypeValidator)fBaseValidator).checkContentEnum(token, state, enumTemp);
  -                                    } else if (fBaseValidator instanceof FloatDatatypeValidator) {
  -                                        ((FloatDatatypeValidator)fBaseValidator).checkContentEnum(token, state, enumTemp);
  -                                    } else if (fBaseValidator instanceof DoubleDatatypeValidator) {
  -                                        ((DoubleDatatypeValidator)fBaseValidator).checkContentEnum(token, state, enumTemp);
  +                                    //REVISIT: date/time enumeration support
  +                                    if (fBaseValidator instanceof AbstractNumericValidator) {
  +                                        ((AbstractNumericValidator)fBaseValidator).checkContentEnum(token, state, enumTemp);
                                       } else { 
                                           if (!token.equals(eToken)) { //validate enumeration for all other types
                                               throw new InvalidDatatypeValueException("Value '"+content+ "' must be one of "+enumeration);
  
  
  
  1.10      +3 -0      xml-xerces/java/src/org/apache/xerces/validators/datatype/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/Makefile,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Makefile	2001/04/09 20:57:39	1.9
  +++ Makefile	2001/05/03 19:57:44	1.10
  @@ -2,6 +2,8 @@
   
   TARGETS=\
   	AbstractDatatypeValidator.class\
  +	AbstractNumericFacetValidator.class\
  +	AbstractNumericValidator.class\
   	AnyURIDatatypeValidator.class\
   	Base64BinaryDatatypeValidator.class\
   	BooleanDatatypeValidator.class\
  @@ -28,6 +30,7 @@
   	MonthDayDatatypeValidator.class\
   	NOTATIONDatatypeValidator.class \
   	QNameDatatypeValidator.class\
  +	SchemaDateTimeException.class\
   	StateMessageDatatype.class\
   	StringDatatypeValidator.class\
   	TimeDatatypeValidator.class\
  
  
  
  1.9       +14 -0     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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- UnionDatatypeValidator.java	2001/04/25 20:42:10	1.8
  +++ UnionDatatypeValidator.java	2001/05/03 19:57:45	1.9
  @@ -110,6 +110,20 @@
                   }
               } //end for
   
  +            // check 4.3.5.c0 must: enumeration values from the value space of base
  +            if ( base != null &&
  +                (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 &&
  +                (fEnumeration != null) ) {
  +                int i = 0;
  +                try {
  +                    for (; i < fEnumeration.size(); i++) {
  +                        base.validate ((String)fEnumeration.elementAt(i), null);
  +                    }
  +                } catch ( Exception idve ){
  +                    throw new InvalidDatatypeFacetException( "Value of enumeration = '" + fEnumeration.elementAt(i) +
  +                                                             "' must be from the value space of base.");
  +                }
  +            }
           }// End of Facets Setting
   
       }
  
  
  

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