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/02/23 17:41:47 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/validators/datatype NOTATIONDatatypeValidator.java StringDatatypeValidator.java

elena       01/02/23 08:41:47

  Modified:    java/src/org/apache/xerces/validators/datatype
                        NOTATIONDatatypeValidator.java
                        StringDatatypeValidator.java
  Log:
  Datatype fixes
  It appears that NOTATION datatype was completely bogus.
  We did not do anything..
  
  Revision  Changes    Path
  1.5       +47 -16    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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NOTATIONDatatypeValidator.java	2000/10/17 00:52:39	1.4
  +++ NOTATIONDatatypeValidator.java	2001/02/23 16:41:47	1.5
  @@ -58,19 +58,28 @@
   package org.apache.xerces.validators.datatype;
   
   import java.util.Hashtable;
  +import java.util.Vector;
  +import java.util.Enumeration;
   import java.util.Locale;
  +import org.apache.xerces.validators.schema.SchemaSymbols;
   
   /**
    * NOTATIONValidator defines the interface that data type validators must obey.
    * These validators can be supplied by the application writer and may be useful as
    * standalone code as well as plugins to the validator architecture.
    * 
  + * @author Elena Litani
    * @author Jeffrey Rodriguez-
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: NOTATIONDatatypeValidator.java,v 1.4 2000/10/17 00:52:39 jeffreyr Exp $
  + * @version $Id: NOTATIONDatatypeValidator.java,v 1.5 2001/02/23 16:41:47 elena Exp $
    */
   public class NOTATIONDatatypeValidator extends AbstractDatatypeValidator {
  +    // REVISIT: add facets allowed for NOTATION.
  +    // wait for schema to clarify why we need so many facets on NOTATION..
       private DatatypeValidator fBaseValidator = null;
  +    private Vector     fEnumeration      = new Vector();
  +    private int        fFacetsDefined    = 0;
  +    private int        fLength           = 0;
   
       public NOTATIONDatatypeValidator () throws InvalidDatatypeFacetException {
           this( null, null, false ); // Native, No Facets defined, Restriction
  @@ -79,6 +88,30 @@
       public NOTATIONDatatypeValidator ( DatatypeValidator base, Hashtable facets, 
            boolean derivedByList ) throws InvalidDatatypeFacetException {
            setBasetype( base ); // Set base type 
  +         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;
  +                    fEnumeration    = (Vector)facets.get(key);
  +                 } else if ( key.equals(SchemaSymbols.ELT_LENGTH) ) {
  +                    fFacetsDefined += DatatypeValidator.FACET_LENGTH;
  +                    String lengthValue = (String)facets.get(key);
  +                    try {
  +                        fLength     = Integer.parseInt( lengthValue );
  +                    } catch (NumberFormatException nfe) {
  +                        throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"' is invalid.");
  +                    }
  +                    if ( fLength < 0 )
  +                        throw new InvalidDatatypeFacetException("Length value '"+lengthValue+"'  must be a nonNegativeInteger.");
  +                 }
  +             }
  +         }
  +         if (fBaseValidator!=null && (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION)==0) { 
  +             //REVISIT: clarify with Schema - if it is a fatal error (need to throw an exception)
  +             System.err.println("[Internal parser error] Enumeration facet is required for NOTATION decl!");
  +         }
  +         
       }
   
   
  @@ -99,32 +132,30 @@
        * @see         org.apache.xerces.validators.datatype.InvalidDatatypeValueException
        */
       public Object validate(String content, Object state ) throws InvalidDatatypeValueException{
  +         if (fBaseValidator!=null) { 
  +            if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 ) {
  +              if ( fEnumeration.contains( content ) == false )
  +                  throw new InvalidDatatypeValueException("Value '"+content+"' must be one of "+fEnumeration);
  +          }
  +          if ( (fFacetsDefined & DatatypeValidator.FACET_LENGTH) != 0 ) {
  +            if ( content.length() != fLength ) {
  +                throw new InvalidDatatypeValueException("Value '"+content+
  +                                                        "' with length '"+content.length()+
  +                                                        "' is not equal to length facet '"+fLength+"'.");
  +            }
  +          }
  +        }
           return null;
       }
   
  -    public Hashtable getFacets(){
  -        return null;
  -    }
   
   
  -
       /**
       * set the locate to be used for error messages
       */
       public void setLocale(Locale locale){
       }
   
  -    /**
  -     * REVISIT
  -     * Compares two Datatype for order
  -     * 
  -     * @param o1
  -     * @param o2
  -     * @return 
  -     */
  -    public int compare( String content1, String content2){
  -        return -1;
  -    }
     /**
        * Returns a copy of this object.
        */
  
  
  
  1.21      +1 -2      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.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StringDatatypeValidator.java	2001/02/21 22:24:37	1.20
  +++ StringDatatypeValidator.java	2001/02/23 16:41:47	1.21
  @@ -62,7 +62,6 @@
   import java.util.Enumeration;
   import java.util.Locale;
   import java.text.Collator;
  -import java.util.Enumeration;
   import java.util.StringTokenizer;
   import java.util.NoSuchElementException;
   import org.apache.xerces.validators.schema.SchemaSymbols;
  @@ -74,7 +73,7 @@
    * @author Kito D. Mann, Virtua Communications Corp.
    * @author Jeffrey Rodriguez
    * @author Mark Swinkles - List Validation refactoring
  - * @version $Id: StringDatatypeValidator.java,v 1.20 2001/02/21 22:24:37 elena Exp $
  + * @version $Id: StringDatatypeValidator.java,v 1.21 2001/02/23 16:41:47 elena Exp $
    */
   public class StringDatatypeValidator extends AbstractDatatypeValidator{
       private Locale     fLocale          = null;