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/30 23:25:51 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/validators/datatype AbstractNumericFacetValidator.java DateTimeValidator.java
elena 01/05/30 14:25:50
Modified: java/src/org/apache/xerces/validators/datatype
AbstractNumericFacetValidator.java
DateTimeValidator.java
Log:
[fix] date/time comparison may result in _indeterminate_ value.
Revision Changes Path
1.5 +38 -19 xml-xerces/java/src/org/apache/xerces/validators/datatype/AbstractNumericFacetValidator.java
Index: AbstractNumericFacetValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/validators/datatype/AbstractNumericFacetValidator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractNumericFacetValidator.java 2001/05/15 14:52:01 1.4
+++ AbstractNumericFacetValidator.java 2001/05/30 21:25:47 1.5
@@ -71,7 +71,7 @@
* minInclusive, maxInclusive, minExclusive, maxExclusive according to schema specs.
*
* @author Elena Litani
- * @version $Id: AbstractNumericFacetValidator.java,v 1.4 2001/05/15 14:52:01 elena Exp $
+ * @version $Id: AbstractNumericFacetValidator.java,v 1.5 2001/05/30 21:25:47 elena Exp $
*/
public abstract class AbstractNumericFacetValidator extends AbstractDatatypeValidator {
@@ -82,6 +82,8 @@
protected Object fMinInclusive = null;
protected Object fMinExclusive = null;
+ protected static final short INDETERMINATE=2;
+
public AbstractNumericFacetValidator () throws InvalidDatatypeFacetException {
this( null, null, false ); // Native, No Facets defined, Restriction
}
@@ -97,6 +99,7 @@
initializeValues();
// Set Facets if any defined
if ( facets != null ) {
+ int result; // result of comparison
Vector enumeration = null;
for ( Enumeration e = facets.keys(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
@@ -152,7 +155,6 @@
}
if ( fFacetsDefined != 0 ) {
-
// check 4.3.8.c1 error: maxInclusive + maxExclusive
if ( ((fFacetsDefined & DatatypeValidator.FACET_MAXEXCLUSIVE) != 0) &&
((fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) ) {
@@ -167,13 +169,15 @@
// check 4.3.7.c1 must: minInclusive <= maxInclusive
if ( ((fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) &&
((fFacetsDefined & DatatypeValidator.FACET_MININCLUSIVE) != 0) ) {
- if ( compareValues(fMinInclusive, fMaxInclusive) == 1 )
+ result = compareValues(fMinInclusive, fMaxInclusive);
+ if ( result == 1 || result == INDETERMINATE)
throw new InvalidDatatypeFacetException( "minInclusive value ='" + getMinInclusive(false) + "'must be <= maxInclusive value ='" +
getMaxInclusive(false) + "'. " );
}
// check 4.3.8.c2 must: minExclusive <= maxExclusive ??? minExclusive < maxExclusive
if ( ((fFacetsDefined & DatatypeValidator.FACET_MAXEXCLUSIVE) != 0) && ((fFacetsDefined & DatatypeValidator.FACET_MINEXCLUSIVE) != 0) ) {
- if ( compareValues(fMinExclusive, fMaxExclusive) == 1 )
+ result =compareValues(fMinExclusive, fMaxExclusive);
+ if ( result == 1 || result == INDETERMINATE)
throw new InvalidDatatypeFacetException( "minExclusive value ='" + getMinExclusive(false) + "'must be <= maxExclusive value ='" +
getMaxExclusive(false) + "'. " );
}
@@ -202,7 +206,7 @@
// maxInclusive >= base.maxExclusive
// maxInclusive < base.minInclusive
// maxInclusive <= base.minExclusive
- int result;
+
if ( ((fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) ) {
if ( ((numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0)){
result = compareValues(fMaxInclusive, numBase.fMaxInclusive);
@@ -212,7 +216,7 @@
"' must be equal to base.maxInclusive value = '" +
getMaxInclusive(true) + "' with attribute {fixed} = true" );
}
- if ( result == 1 ){
+ if ( result == 1 || result == INDETERMINATE){
throw new InvalidDatatypeFacetException( "maxInclusive value ='" + getMaxInclusive(false) + "' must be <= base.maxInclusive value ='" +
getMaxInclusive(true) + "'." );
}
@@ -222,10 +226,13 @@
throw new InvalidDatatypeFacetException(
"maxInclusive value ='" + getMaxInclusive(false) + "' must be < base.maxExclusive value ='" +
getMaxExclusive(true) + "'." );
- if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MININCLUSIVE) != 0) &&
- compareValues(fMaxInclusive, numBase.fMinInclusive) == -1 )
+ if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MININCLUSIVE) != 0)){
+ result = compareValues(fMaxInclusive, numBase.fMinInclusive);
+ if (result == -1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException( "maxInclusive value ='" + getMaxInclusive(false) + "' must be >= base.minInclusive value ='" +
getMinInclusive(true) + "'." );
+ }
+ }
if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MINEXCLUSIVE) != 0) &&
compareValues(fMaxInclusive, numBase.fMinExclusive ) != 1 )
throw new InvalidDatatypeFacetException(
@@ -247,15 +254,18 @@
"' must be equal to base.maxExclusive value = '" +
getMaxExclusive(true) + "' with attribute {fixed} = true" );
}
- if (result == 1) {
+ if (result == 1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException( "maxExclusive value ='" + getMaxExclusive(false) + "' must be < base.maxExclusive value ='" +
getMaxExclusive(true) + "'." );
}
}
- if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) &&
- compareValues(fMaxExclusive, numBase.fMaxInclusive) == 1 )
+ if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0)){
+ result= compareValues(fMaxExclusive, numBase.fMaxInclusive);
+ if (result == 1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException( "maxExclusive value ='" + getMaxExclusive(false) + "' must be <= base.maxInclusive value ='" +
getMaxInclusive(true) + "'." );
+ }
+ }
if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MINEXCLUSIVE) != 0) &&
compareValues(fMaxExclusive, numBase.fMinExclusive ) != 1 )
throw new InvalidDatatypeFacetException( "maxExclusive value ='" + getMaxExclusive(false) + "' must be > base.minExclusive value ='" +
@@ -280,21 +290,27 @@
"' must be equal to base.minExclusive value = '" +
getMinExclusive(true) + "' with attribute {fixed} = true" );
}
- if (result == -1) {
+ if (result == -1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException( "minExclusive value ='" + getMinExclusive(false) + "' must be >= base.minExclusive value ='" +
getMinExclusive(true) + "'." );
}
}
- if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) &&
- compareValues(fMinExclusive, numBase.fMaxInclusive) == 1 )
+ if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0)){
+ result=compareValues(fMinExclusive, numBase.fMaxInclusive);
+ if (result == 1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException(
"minExclusive value ='" + getMinExclusive(false) + "' must be <= base.maxInclusive value ='" +
getMaxInclusive(true) + "'." );
- if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MININCLUSIVE) != 0) &&
- compareValues(fMinExclusive, numBase.fMinInclusive) == -1 )
+ }
+ }
+ if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MININCLUSIVE) != 0)){
+ result = compareValues(fMinExclusive, numBase.fMinInclusive);
+ if (result == -1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException(
"minExclusive value ='" + getMinExclusive(false) + "' must be >= base.minInclusive value ='" +
getMinInclusive(true) + "'." );
+ }
+ }
if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXEXCLUSIVE) != 0) &&
compareValues(fMinExclusive, numBase.fMaxExclusive) != -1 )
throw new InvalidDatatypeFacetException( "minExclusive value ='" + getMinExclusive(false) + "' must be < base.maxExclusive value ='" +
@@ -315,15 +331,18 @@
"' must be equal to base.minInclusive value = '" +
getMinInclusive(true) + "' with attribute {fixed} = true" );
}
- if (result == -1 ){
+ if (result == -1 || result == INDETERMINATE){
throw new InvalidDatatypeFacetException( "minInclusive value ='" + getMinInclusive(false) + "' must be >= base.minInclusive value ='" +
getMinInclusive(true) + "'." );
}
}
- if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0) &&
- compareValues(fMinInclusive, numBase.fMaxInclusive) == 1 )
+ if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MAXINCLUSIVE) != 0)){
+ result=compareValues(fMinInclusive, numBase.fMaxInclusive);
+ if (result == 1 || result == INDETERMINATE) {
throw new InvalidDatatypeFacetException( "minInclusive value ='" + getMinInclusive(false) + "' must be <= base.maxInclusive value ='" +
getMaxInclusive(true) + "'." );
+ }
+ }
if ( (( numBase.fFacetsDefined & DatatypeValidator.FACET_MINEXCLUSIVE) != 0) &&
compareValues(fMinInclusive, numBase.fMinExclusive ) != 1 )
throw new InvalidDatatypeFacetException( "minInclusive value ='" + getMinInclusive(false) + "' must be > base.minExclusive value ='" +
1.9 +1 -2 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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DateTimeValidator.java 2001/05/03 19:57:32 1.8
+++ DateTimeValidator.java 2001/05/30 21:25:48 1.9
@@ -72,7 +72,7 @@
* @author Elena Litani
* @author Len Berman
*
- * @version $Id: DateTimeValidator.java,v 1.8 2001/05/03 19:57:32 elena Exp $
+ * @version $Id: DateTimeValidator.java,v 1.9 2001/05/30 21:25:48 elena Exp $
*/
public abstract class DateTimeValidator extends AbstractNumericFacetValidator {
@@ -90,7 +90,6 @@
protected static final short LESS_THAN=-1;
protected static final short EQUAL=0;
protected static final short GREATER_THAN=1;
- protected static final short INDETERMINATE=2;
//size for all objects must have the same fields:
//CCYY, MM, DD, h, m, s, ms + timeZone
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org