You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by je...@locus.apache.org on 2000/06/07 18:04:01 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/validators/datatype DatatypeValidatorFactoryImpl.java DecimalDatatypeValidator.java

jeffreyr    00/06/07 09:04:01

  Modified:    java/src/org/apache/xerces/validators/datatype
                        DatatypeValidatorFactoryImpl.java
                        DecimalDatatypeValidator.java
  Log:
  fixed decimal type bug related to integer enumeration
  
  Revision  Changes    Path
  1.4       +71 -85    xml-xerces/java/src/org/apache/xerces/validators/datatype/DatatypeValidatorFactoryImpl.java
  
  Index: DatatypeValidatorFactoryImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/DatatypeValidatorFactoryImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DatatypeValidatorFactoryImpl.java	2000/06/06 21:52:14	1.3
  +++ DatatypeValidatorFactoryImpl.java	2000/06/07 16:04:00	1.4
  @@ -66,11 +66,12 @@
   
   
   /**
  - * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.3 2000/06/06 21:52:14 jeffreyr Exp $
  + * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.4 2000/06/07 16:04:00 jeffreyr Exp $
    * @author  Jeffrey Rodriguez
    */
   
   public class DatatypeValidatorFactoryImpl implements DatatypeValidatorFactory {
  +    private static boolean fDebug = false;
       private static DatatypeValidatorFactoryImpl _instance = new DatatypeValidatorFactoryImpl();
       private Hashtable fRegistry = new Hashtable();
   
  @@ -106,175 +107,145 @@
   
               Hashtable facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PATTERN , "([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]+)(-[a-zA-Z]+)*" );
  -            addValidator("language", 
  -                         createDatatypeValidator("language", new StringDatatypeValidator() , facets,
  -                                                 false ));
  +            
  +            createDatatypeValidator("language", new StringDatatypeValidator() , facets,
  +                                                 false );
   
  -            addValidator("IDREFS",
  -                         createDatatypeValidator( "IDREFS", new IDREFDatatypeValidator(), null , true ));
  +            createDatatypeValidator( "IDREFS", new IDREFDatatypeValidator(), null , true );
   
  -            addValidator("ENTITIES", 
  -                         createDatatypeValidator( "ENTITIES", new ENTITYDatatypeValidator(),  null, true ));
  +            createDatatypeValidator( "ENTITIES", new ENTITYDatatypeValidator(),  null, true );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PATTERN , "\\c+" );
  -            addValidator("NMTOKEN", 
  -                         createDatatypeValidator("NMTOKEN", new StringDatatypeValidator(), facets, false ));
  +            createDatatypeValidator("NMTOKEN", new StringDatatypeValidator(), facets, false );
   
  -            addValidator("NMTOKENS", 
  -                         createDatatypeValidator("NMTOKENS",  
  -                                                 getDatatypeValidator( "NMTOKEN" ), null, true ));
  +            createDatatypeValidator("NMTOKENS",  
  +                                                 getDatatypeValidator( "NMTOKEN" ), null, true );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PATTERN , "\\i\\c*" );
  -            addValidator("Name", 
  -                         createDatatypeValidator("Name", new StringDatatypeValidator(), facets, false ));
  +            createDatatypeValidator("Name", new StringDatatypeValidator(), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PATTERN , "[\\i-[:]][\\c-[:]]*"  );
  -            addValidator("NCName", 
  -                         createDatatypeValidator("NCName", new StringDatatypeValidator(), facets, false ));
  +            createDatatypeValidator("NCName", new StringDatatypeValidator(), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_SCALE, "0");
  -            addValidator("integer", 
  -                         createDatatypeValidator("integer", new DecimalDatatypeValidator(), facets, false));
  +            createDatatypeValidator("integer", new DecimalDatatypeValidator(), facets, false);
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "0" );
  -            addValidator("nonPositiveInteger", 
  -                         createDatatypeValidator("nonPositiveInteger", 
  -                                                 getDatatypeValidator("integer"), facets, false ));
  +            createDatatypeValidator("nonPositiveInteger", 
  +                                                 getDatatypeValidator("integer"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "-1" );
  -            addValidator("negativeInteger", 
  -                         createDatatypeValidator("negativeInteger", 
  -                                                 getDatatypeValidator( "nonPositiveInteger"), facets, false ));
  +            createDatatypeValidator("negativeInteger", 
  +                                                 getDatatypeValidator( "nonPositiveInteger"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "9223372036854775807");
               facets.put(SchemaSymbols.ELT_MININCLUSIVE,  "-9223372036854775808");
  -            addValidator("long", 
  -                         createDatatypeValidator("long",
  -                                                 getDatatypeValidator( "integer"), facets, false ));
  +            createDatatypeValidator("long", getDatatypeValidator( "integer"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "2147483647");
               facets.put(SchemaSymbols.ELT_MININCLUSIVE,  "-2147483648");
  -            addValidator("int", 
  -                         createDatatypeValidator("int", 
  -                                                 getDatatypeValidator( "long"), facets,false ));
  +            createDatatypeValidator("int", getDatatypeValidator( "long"), facets,false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "32767");
               facets.put(SchemaSymbols.ELT_MININCLUSIVE,  "-32768");
  -            addValidator("short", 
  -                         createDatatypeValidator("short", 
  -                                                 getDatatypeValidator( "int"), facets, false ));
  +            createDatatypeValidator("short", getDatatypeValidator( "int"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE , "127");
               facets.put(SchemaSymbols.ELT_MININCLUSIVE,  "-128");
  -            addValidator("byte",  
  -                         createDatatypeValidator("byte",
  -                                                 getDatatypeValidator( "short"), facets, false ));
  +            createDatatypeValidator("byte",
  +                                        getDatatypeValidator( "short"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MININCLUSIVE, "0" );
  -            addValidator("nonNegativeInteger", 
  -                         createDatatypeValidator("nonNegativeInteger", 
  -                                                 getDatatypeValidator( "integer"), facets, false ));
  +            createDatatypeValidator("nonNegativeInteger", 
  +                                          getDatatypeValidator( "integer"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE, "18446744073709551615" );
  -            addValidator("unsignedLong", 
  -                         createDatatypeValidator("unsignedLong",
  -                                                 getDatatypeValidator( "nonNegativeInteger"), facets, false ));
  +            createDatatypeValidator("unsignedLong",
  +                                                 getDatatypeValidator( "nonNegativeInteger"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE, "4294967295" );
  -            addValidator("unsignedInt", 
  -                         createDatatypeValidator("unsignedInt",
  -                                                 getDatatypeValidator( "unsignedLong"), facets, false ));
  +            createDatatypeValidator("unsignedInt",
  +                                                 getDatatypeValidator( "unsignedLong"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE, "65535" );
  -            addValidator("unsignedShort", 
  -                         createDatatypeValidator("unsignedShort", 
  -                                                 getDatatypeValidator( "unsignedInt"), facets, false ));
  +            createDatatypeValidator("unsignedShort", 
  +                                                 getDatatypeValidator( "unsignedInt"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE, "255" );
  -            addValidator("unsignedByte", 
  -                         createDatatypeValidator("unsignedByte",
  -                                                 getDatatypeValidator( "unsignedShort"), facets, false ));
  +            createDatatypeValidator("unsignedByte",
  +                                                 getDatatypeValidator( "unsignedShort"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_MAXINCLUSIVE, "255" );
  -            addValidator("positiveInteger", 
  -                         createDatatypeValidator("positiveInteger",
  -                                                 getDatatypeValidator( "nonNegativeInteger"), facets, false ));
  +            createDatatypeValidator("positiveInteger",
  +                                                 getDatatypeValidator( "nonNegativeInteger"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "P0Y" );
               facets.put(SchemaSymbols.ELT_PERIOD,   "P0Y" );
  -            addValidator("timeInstant", 
  -                         createDatatypeValidator("timeInstant", 
  -                                                 getDatatypeValidator( "recurringDuration"),facets, false ));
  +            createDatatypeValidator("timeInstant", 
  +                                                 getDatatypeValidator( "recurringDuration"),facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "P0Y" );
               facets.put(SchemaSymbols.ELT_PERIOD,   "PY24H" );
  -            addValidator("time", 
  -                         createDatatypeValidator("time", 
  -                                                 getDatatypeValidator( "recurringDuration"), facets, false ));
  +            createDatatypeValidator("time", 
  +                                                 getDatatypeValidator( "recurringDuration"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PERIOD,   "P0Y" );
  -            addValidator("timePeriod", 
  -                         createDatatypeValidator("timePeriod", 
  -                                                 getDatatypeValidator( "recurringDuration"), facets, false ));
  +            createDatatypeValidator("timePeriod", 
  +                                                 getDatatypeValidator( "recurringDuration"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "PT24H" );
  -            addValidator("date", 
  -                         createDatatypeValidator("date",
  -                                                 getDatatypeValidator( "timePeriod"), facets, false ));
  +            createDatatypeValidator("date",
  +                                                 getDatatypeValidator( "timePeriod"), facets, false );
   
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "P1M" );
  -            addValidator("month", 
  -                         createDatatypeValidator("month",
  -                                                 getDatatypeValidator( "timePeriod"), facets, false ));
  +            createDatatypeValidator("month",
  +                                                 getDatatypeValidator( "timePeriod"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "P1Y" );
  -            addValidator("year", 
  -                         createDatatypeValidator("year", 
  -                                                 getDatatypeValidator( "timePeriod"), facets, false ));
  +            createDatatypeValidator("year", 
  +                                                 getDatatypeValidator( "timePeriod"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_DURATION, "P100Y" );
  -            addValidator("century", 
  -                         createDatatypeValidator("century", 
  -                                                 getDatatypeValidator( "timePeriod"), facets, false ));
  +            createDatatypeValidator("century", 
  +                                                 getDatatypeValidator( "timePeriod"), facets, false );
   
               facets = new Hashtable();
               facets.put(SchemaSymbols.ELT_PERIOD, "P1Y" );
               facets.put(SchemaSymbols.ELT_DURATION, "PT24H" );
  -            addValidator("recurringDate", 
  -                         createDatatypeValidator("recurringDate",
  -                                                 getDatatypeValidator( "recurringDuration"),facets, false ));
  +            createDatatypeValidator("recurringDate",
  +                                                 getDatatypeValidator( "recurringDuration"),facets, false );
           } catch ( InvalidDatatypeFacetException ex ){
               ex.printStackTrace();
           }
  @@ -308,9 +279,8 @@
   
                   simpleType = 
                   ( DatatypeValidator ) createDatatypeValidator (
  -                                                   validatorConstructor, validatorArgs );
  +                                                 validatorConstructor, validatorArgs );
   
  -
                   addValidator( typeName, simpleType );//register validator
   
               } catch (NoSuchMethodException e) {
  @@ -330,13 +300,29 @@
               validator = validatorConstructor.newInstance(arguments);
               return validator;
           } catch (InstantiationException e) {
  -            System.out.println(e);
  +            if( fDebug == true ){
  +                e.printStackTrace();
  +            }else {
  +                return null;
  +            }
           } catch (IllegalAccessException e) {
  -            System.out.println(e);
  +            if( fDebug == true ){
  +                e.printStackTrace();
  +            }else {
  +                return null;
  +            }
           } catch (IllegalArgumentException e) {
  -            System.out.println(e);
  +            if( fDebug == true ){
  +                e.printStackTrace();
  +            }else {
  +                return null;
  +            }
           } catch (InvocationTargetException e) {
  -            System.out.println(e);
  +            if ( fDebug == true ){
  +                e.getTargetException().printStackTrace();
  +            } else {
  +                return null;
  +            }
           }
           return validator;
       }
  
  
  
  1.4       +27 -11    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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DecimalDatatypeValidator.java	2000/06/06 19:54:24	1.3
  +++ DecimalDatatypeValidator.java	2000/06/07 16:04:00	1.4
  @@ -71,7 +71,7 @@
    *
    * @author Ted Leung
    * @author Jeffrey Rodriguez
  - * @version $Id: DecimalDatatypeValidator.java,v 1.3 2000/06/06 19:54:24 jeffreyr Exp $
  + * @version $Id: DecimalDatatypeValidator.java,v 1.4 2000/06/07 16:04:00 jeffreyr Exp $
    */
   
   public class DecimalDatatypeValidator extends AbstractDatatypeValidator {
  @@ -108,35 +108,44 @@
                                         boolean derivedByList ) throws InvalidDatatypeFacetException {
           setBasetype( base ); // Set base type 
   
  +
           if ( facets != null ) {   // Set Facet
               if ( derivedByList == false ) { // Derivation by Constraint 
  +                Vector enumeration = null;
  +                String value       = null;
                   for (Enumeration e = facets.keys(); e.hasMoreElements();) {
                       String key   = (String) e.nextElement();
  -                    String value = ((String) facets.get(key ));
                       try {
                           if (key.equals(SchemaSymbols.ELT_PATTERN)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_PATTERN;
                               fPattern        = value;
                           } else if (key.equals(SchemaSymbols.ELT_ENUMERATION)) {
                               fFacetsDefined += DatatypeValidator.FACET_ENUMERATION;
  -                            continue; //Treat the enumaration after this for loop
  +                            enumeration     = (Vector)facets.get(key);
                           } else if (key.equals(SchemaSymbols.ELT_MAXINCLUSIVE)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_MAXINCLUSIVE;
                               fMaxInclusive    = new BigDecimal(value);
                           } else if (key.equals(SchemaSymbols.ELT_MAXEXCLUSIVE)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_MAXEXCLUSIVE;
                               fMaxExclusive   = new BigDecimal(value);
                           } else if (key.equals(SchemaSymbols.ELT_MININCLUSIVE)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_MININCLUSIVE;
                               fMinInclusive   = new BigDecimal(value);
                           } else if (key.equals(SchemaSymbols.ELT_MINEXCLUSIVE)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_MININCLUSIVE;
                               fMinExclusive   = new BigDecimal(value);
                           } else if (key.equals(SchemaSymbols.ELT_PRECISION)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_PRECISSION;
                               isPrecisionDefined = true;
                               fPrecision      = Integer.parseInt(value );
                           } else if (key.equals(SchemaSymbols.ELT_SCALE)) {
  +                            value = ((String) facets.get(key ));
                               fFacetsDefined += DatatypeValidator.FACET_SCALE;
                               isScaleDefined  = true;
                               fScale          = Integer.parseInt( value );
  @@ -171,18 +180,17 @@
                   }
   
                   if ( (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION ) != 0 ) {
  -                    Vector v = (Vector) facets.get(SchemaSymbols.ELT_ENUMERATION);    
  -                    if (v != null) {
  -                        fEnumDecimal = new BigDecimal[v.size()];
  -                        for (int i = 0; i < v.size(); i++)
  +                    if (enumeration != null) {
  +                        fEnumDecimal = new BigDecimal[enumeration.size()];
  +                        for (int i = 0; i < enumeration.size(); i++)
                               try {
  -                                fEnumDecimal[i] = new BigDecimal( ((String) v.elementAt(i)));
  +                                fEnumDecimal[i] = new BigDecimal( ((String) enumeration.elementAt(i)));
                                   boundsCheck(fEnumDecimal[i]); // Check against max,min Inclusive, Exclusives
                               } catch (InvalidDatatypeValueException idve) {
                                   throw new InvalidDatatypeFacetException(
                                                                          getErrorString(DatatypeMessageProvider.InvalidEnumValue,
                                                                                         DatatypeMessageProvider.MSG_NONE,
  -                                                                                      new Object [] { v.elementAt(i)}));
  +                                                                                      new Object [] { enumeration.elementAt(i)}));
                               } catch (NumberFormatException nfe) {
                                   throw new InvalidDatatypeFacetException(
                                                                          "Internal Error parsing enumerated values for Decimal type");
  @@ -192,6 +200,7 @@
               } else { // Derivation by List
               }
           }//End of Facet setup
  +
       }
   
   
  @@ -239,10 +248,11 @@
               boundsCheck(d);
               if (  fEnumDecimal != null )
                    enumCheck(d);
  +
  +
           } else { //derivation by list
   
           }
  -
       return null;
       }
   
  @@ -271,16 +281,22 @@
                      getErrorString(DatatypeMessageProvider.OutOfBounds,
                      DatatypeMessageProvider.MSG_NONE,
                                              new Object [] { d}));
  +
       }
   
       private void enumCheck(BigDecimal v) throws InvalidDatatypeValueException {
           for (int i = 0; i < fEnumDecimal.length; i++) {
  -            if (v == fEnumDecimal[i]) return;
  +            if (v.equals(fEnumDecimal[i] ))
  +            {
  +                return;
  +            }
  +
           }
           throw new InvalidDatatypeValueException(
                       getErrorString(DatatypeMessageProvider.NotAnEnumValue,
                       DatatypeMessageProvider.MSG_NONE,
                                              new Object [] { v}));
  +
       }
   
       /**