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