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;