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/10/27 03:45:19 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes DatatypeValidatorFactoryImpl.java IDREFDatatypeValidator.java
jeffreyr 00/10/26 18:45:19
Modified: java/src/org/apache/xerces/impl/validation/datatypes Tag:
xerces_j_2 DatatypeValidatorFactoryImpl.java
IDREFDatatypeValidator.java
Log:
added IDREF, IDREFS Datatype Validator
Revision Changes Path
No revision
No revision
1.1.2.7 +20 -1 xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/DatatypeValidatorFactoryImpl.java
Index: DatatypeValidatorFactoryImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/DatatypeValidatorFactoryImpl.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- DatatypeValidatorFactoryImpl.java 2000/10/27 01:14:24 1.1.2.6
+++ DatatypeValidatorFactoryImpl.java 2000/10/27 01:45:18 1.1.2.7
@@ -83,7 +83,7 @@
* method to get a validator.
*
* @author Jeffrey Rodriguez
- * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.1.2.6 2000/10/27 01:14:24 jeffreyr Exp $
+ * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.1.2.7 2000/10/27 01:45:18 jeffreyr Exp $
*/
public class DatatypeValidatorFactoryImpl implements DatatypeValidatorFactory {
private static final boolean fDebug = false;
@@ -441,13 +441,32 @@
if (tst != null) {
System.out.println("Table of ID = " + tst.toString());
}
+ /*
try {
idData.validate( "a1", null );
} catch ( Exception ex ) {
ex.printStackTrace();// Should throw a unique exception
}
+ */
}
+
+ DatatypeValidator idRefData = tstRegistry.getDatatypeValidator("IDREF" );
+ if( idRefData != null ){
+ IDREFDatatypeValidator refData = (IDREFDatatypeValidator) idRefData;
+ refData.initialize( ((IDDatatypeValidator) idData).getTableIds());
+ try {
+ refData.validate( "a1", null );
+ refData.validate( "a2", null );
+ //refData.validate( "a3", null );//Should throw exception at validate()
+ refData.validate();
+ } catch( Exception ex ){
+ ex.printStackTrace();
+ }
+ }
+
+
+
}
1.1.2.3 +145 -211 xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/IDREFDatatypeValidator.java
Index: IDREFDatatypeValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/IDREFDatatypeValidator.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- IDREFDatatypeValidator.java 2000/10/17 02:01:04 1.1.2.2
+++ IDREFDatatypeValidator.java 2000/10/27 01:45:18 1.1.2.3
@@ -79,229 +79,163 @@
* standalone code as well as plugins to the validator architecture.
*
* @author Jeffrey Rodriguez-
- * @version $Id: IDREFDatatypeValidator.java,v 1.1.2.2 2000/10/17 02:01:04 jeffreyr Exp $
+ * @version $Id: IDREFDatatypeValidator.java,v 1.1.2.3 2000/10/27 01:45:18 jeffreyr Exp $
*/
public class IDREFDatatypeValidator extends AbstractDatatypeValidator {
- private DatatypeValidator fBaseValidator = null;
- private Hashtable fTableOfId = null; //This is pass to us through the state object
- private Hashtable fTableIDRefs = null;
- private Object fNullValue = null;
- private Locale fLocale = null;
- private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
+ private DatatypeValidator fBaseValidator = null;
+ private Hashtable fTableOfId = null; //This is pass to us through the state object
+ private Hashtable fTableIDRefs = null;
+ private Object fNullValue = null;
+ private Locale fLocale = null;
+ private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
+
+ public static final int IDREF_STORE = 0;
+ public static final int IDREF_CLEAR = 1;
+ public static final int IDREF_VALIDATE = 2;
- public static final int IDREF_STORE = 0;
- public static final int IDREF_CLEAR = 1;
- public static final int IDREF_VALIDATE = 2;
+ public IDREFDatatypeValidator () throws InvalidDatatypeFacetException {
+ this( null, null, false ); // Native, No Facets defined, Restriction
+ }
+
+ public IDREFDatatypeValidator ( DatatypeValidator base, Hashtable facets,
+ boolean derivedByList ) throws InvalidDatatypeFacetException {
+
+ setBasetype( base ); // Set base type
+
+ }
+
+
+ /**
+ * Checks that "content" string is valid
+ * datatype.
+ * If invalid a Datatype validation exception is thrown.
+ *
+ * @param content A string containing the content to be validated
+ * @param derivedBylist
+ * Flag which is true when type
+ * is derived by list otherwise it
+ * it is derived by extension.
+ *
+ * @exception throws InvalidDatatypeException if the content is
+ * invalid according to the rules for the validators
+ * @exception InvalidDatatypeValueException
+ * @see org.apache.xerces.validators.datatype.InvalidDatatypeValueException
+ */
+ public void validate(String content, Object state ) throws InvalidDatatypeValueException{
+ //Pass content as a String
+ if (!XMLChar.isValidName(content)) {//Check if is valid key
+ InvalidDatatypeValueException error = new InvalidDatatypeValueException( "IDREF is not valid" );//Need Message
+ throw error;//Need Message
+ }
+ //System.out.println("Content REF = " + content );
+ addIdRef( content, state);// We are storing IDs
+ }
+
+ public void validate() throws InvalidDatatypeValueException{
+ checkIdRefs();
+ }
+
+
+ public void initialize( Object tableOfIDs ){
+ if ( this.fTableIDRefs != null) {
+ this.fTableIDRefs.clear();
+ } else {
+ this.fTableIDRefs = new Hashtable();
+ }
+ this.fTableOfId = (Hashtable) tableOfIDs; //set reference to table of Ids.
+ }
- public IDREFDatatypeValidator () throws InvalidDatatypeFacetException {
- this( null, null, false ); // Native, No Facets defined, Restriction
- }
-
- public IDREFDatatypeValidator ( DatatypeValidator base, Hashtable facets,
- boolean derivedByList ) throws InvalidDatatypeFacetException {
- setBasetype( base ); // Set base type
- }
+ /**
+ * REVISIT
+ * Compares two Datatype for order
+ *
+ * @param o1
+ * @param o2
+ * @return
+ */
+ public int compare( String content1, String content2){
+ return -1;
+ }
- /**
- * Checks that "content" string is valid
- * datatype.
- * If invalid a Datatype validation exception is thrown.
- *
- * @param content A string containing the content to be validated
- * @param derivedBylist
- * Flag which is true when type
- * is derived by list otherwise it
- * it is derived by extension.
- *
- * @exception throws InvalidDatatypeException if the content is
- * invalid according to the rules for the validators
- * @exception InvalidDatatypeValueException
- * @see org.apache.xerces.validators.datatype.InvalidDatatypeValueException
- */
- public void validate(String content, Object state ) throws InvalidDatatypeValueException{
- /*
- //Pass content as a String
- //System.out.println( "base = " + this.fBaseValidator );
-
- //if( this.fBaseValidator != null ){
- // this.fBaseValidator.validate( content, state );
- //}
- StateMessageDatatype message;
- //System.out.println("conten = " + content );
- if (state!= null){
- message = (StateMessageDatatype) state;
- if (message.getDatatypeState() == IDREFDatatypeValidator.IDREF_CLEAR ){
- if ( this.fTableOfId != null ){
- fTableOfId.clear(); //This is pass to us through the state object
- }
- if ( this.fTableIDRefs != null ){
- fTableIDRefs.clear();
- }
- return null;
- } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_VALIDATE ){
- this.checkIdRefs();//Validate that all keyRef is a keyIds
- } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_STORE ) {
- this.fTableOfId = (Hashtable) message.getDatatypeObject();
- if (!XMLCharacterProperties.validName(content)) {//Check if is valid key
-
- InvalidDatatypeValueException error = new InvalidDatatypeValueException( "IDREF is not valid" );//Need Message
-
- error.setMinorCode(XMLMessages.MSG_IDREF_INVALID );
- error.setMajorCode(XMLMessages.VC_IDREF);
- throw error;//Need Message
- }
- //System.out.println("Content REF = " + content );
- addIdRef( content, state);// We are storing IDs
- }
- }
- } else {
- //System.out.println("list = " + content );
- if (state!= null){
- message = (StateMessageDatatype) state;
- if (message.getDatatypeState() == IDREFDatatypeValidator.IDREF_CLEAR ){
- if ( this.fTableOfId != null ){
- fTableOfId.clear(); //This is pass to us through the state object
- }
- if ( this.fTableIDRefs != null ){
- fTableIDRefs.clear();
- }
- return null;
-
- } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_VALIDATE ){
- //System.out.println("Call to Validate IDREFS" );
- this.checkIdRefs();//Validate that all keyRef is a keyIds
- } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_STORE ) {
- //System.out.println("IDREFS = " + content );
- StringTokenizer tokenizer = new StringTokenizer( content );
- this.fTableOfId = (Hashtable) message.getDatatypeObject();
- while ( tokenizer.hasMoreTokens() ) {
- String idName = tokenizer.nextToken();
- //System.out.println("idName here = " + idName );
- if( this.fBaseValidator != null ){
- this.fBaseValidator.validate( idName, state );
- }
- addIdRef( idName, state);// We are storing IDs
- }
- }
-
- }
-
- }
- return null;
- */
- }
-
-
- /**
- * REVISIT
- * Compares two Datatype for order
+ public Hashtable getFacets(){
+ return null;
+ }
+ /**
+ * Returns a copy of this object.
+ */
+ public Object clone() throws CloneNotSupportedException {
+ throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
+ }
+
+ /**
+ * Name of base type as a string.
+ * A Native datatype has the string "native" as its
+ * base type.
*
- * @param o1
- * @param o2
- * @return
+ * @param base the validator for this type's base type
*/
- public int compare( String content1, String content2){
- return -1;
- }
-
-
- public Hashtable getFacets(){
- return null;
- }
- /**
- * Returns a copy of this object.
- */
- public Object clone() throws CloneNotSupportedException {
- throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
- }
-
- /**
- * Name of base type as a string.
- * A Native datatype has the string "native" as its
- * base type.
- *
- * @param base the validator for this type's base type
- */
- private void setBasetype(DatatypeValidator base){
- fBaseValidator = base;
- }
-
- /** addId. */
- private void addIdRef(String content, Object state) {
- //System.out.println("this.fTableOfId = " + content );
- //System.out.println("state = " + state );
- //System.out.println("table = " + this.fTableOfId );
-
-
- if ( this.fTableOfId != null && this.fTableOfId.containsKey( content ) ){
- //System.out.println("It already contains key = " + content );
- return;
- }
- //System.out.println("Table of IDRefs = " + this.fTableIDRefs );
- if ( this.fTableIDRefs == null ){
- this.fTableIDRefs = new Hashtable();
- } else if ( fTableIDRefs.containsKey( content ) ){
- return;
- }
-
-
- if ( this.fNullValue == null ){
- fNullValue = new Object();
- }
- //System.out.println("tabl IDREFs = " + this.fTableIDRefs );
- try {
- this.fTableIDRefs.put( content, fNullValue );
- } catch( OutOfMemoryError ex ){
- System.out.println( "Out of Memory: Hashtable of ID's has " + this.fTableIDRefs.size() + " Elements" );
- ex.printStackTrace();
- }
- } // addId(int):boolean
-
-
- private void checkIdRefs() throws InvalidDatatypeValueException {
-
- if ( this.fTableIDRefs == null)
- return;
-
- Enumeration en = this.fTableIDRefs.keys();
- //System.out.println("TabIDREFs= " + this.fTableIDRefs );
-
- while (en.hasMoreElements()) {
- String key = (String)en.nextElement();
- //System.out.println( "Key here = x>>" + key + "<<" );
- //System.out.println("Tab Ids = " + this.fTableOfId );
- if ( this.fTableOfId == null || ! this.fTableOfId.containsKey(key)) {
-
- InvalidDatatypeValueException error = new
- InvalidDatatypeValueException( key );
- /* TODO in Xerces 2
- error.setMinorCode(XMLMessages.MSG_ELEMENT_WITH_ID_REQUIRED);
- error.setMajorCode(XMLMessages.VC_IDREF);
- */
- throw error;
- }
- }
-
- } // checkIdRefs()
-
-
- /**
- * set the locate to be used for error messages
- */
- public void setLocale(Locale locale) {
- fLocale = locale;
- }
-
-
- private String getErrorString(int major, int minor, Object args[]) {
- //return fMessageProvider.createMessage(fLocale, major, minor, args);
- return fMessageProvider.formatMessage( fLocale, null, null);
- }
+ private void setBasetype(DatatypeValidator base){
+ fBaseValidator = base;
+ }
+
+ /** addId. */
+ private void addIdRef(String content, Object state) {
+ if ( fTableOfId != null && fTableOfId.containsKey( content ) ) {
+ return;
+ }
+ if ( fTableIDRefs == null ) {
+ fTableIDRefs = new Hashtable();
+ } else if ( fTableIDRefs.containsKey( content ) ) {
+ return;
+ }
+ if ( this.fNullValue == null ) {
+ fNullValue = new Object();
+ }
+ try {
+ this.fTableIDRefs.put( content, fNullValue );
+ } catch ( OutOfMemoryError ex ) {
+ System.out.println( "Out of Memory: Hashtable of ID's has " + this.fTableIDRefs.size() + " Elements" );
+ ex.printStackTrace();
+ }
+ } // addId(int):boolean
+
+
+ private void checkIdRefs() throws InvalidDatatypeValueException {
+
+ if ( fTableIDRefs == null)
+ return;
+
+ Enumeration en = this.fTableIDRefs.keys();
+
+ while (en.hasMoreElements()) {
+ String key = (String)en.nextElement();
+ if ( this.fTableOfId == null || ! this.fTableOfId.containsKey(key)) {
+
+ InvalidDatatypeValueException error = new
+ InvalidDatatypeValueException( key );
+ throw error;
+ }
+ }
+
+ } // checkIdRefs()
+
+
+ /**
+ * set the locate to be used for error messages
+ */
+ public void setLocale(Locale locale) {
+ fLocale = locale;
+ }
+
+ private String getErrorString(int major, int minor, Object args[]) {
+ //return fMessageProvider.createMessage(fLocale, major, minor, args);
+ return fMessageProvider.formatMessage( fLocale, null, null);
+ }
}