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}));
+
}
/**