001    package com.thaiopensource.relaxng.impl;
002    
003    import com.thaiopensource.datatype.Datatype2;
004    import org.relaxng.datatype.DatatypeException;
005    import org.relaxng.datatype.DatatypeStreamingValidator;
006    import org.relaxng.datatype.ValidationContext;
007    import org.relaxng.datatype.helpers.StreamingValidatorImpl;
008    
009    class StringDatatype implements Datatype2 {
010      public boolean isValid(String str, ValidationContext vc) {
011        return true;
012      }
013    
014      public void checkValid(String str, ValidationContext vc) throws DatatypeException {
015        if (!isValid(str, vc))
016          throw new DatatypeException();
017      }
018    
019      public Object createValue(String str, ValidationContext vc) {
020        return str;
021      }
022    
023      public boolean isContextDependent() {
024        return false;
025      }
026    
027      public boolean alwaysValid() {
028        return true;
029      }
030    
031      public int getIdType() {
032        return ID_TYPE_NULL;
033      }
034    
035      public boolean sameValue(Object obj1, Object obj2) {
036        return obj1.equals(obj2);
037      }
038    
039      public int valueHashCode(Object obj) {
040        return obj.hashCode();
041      }
042    
043      public DatatypeStreamingValidator createStreamingValidator(ValidationContext vc) {
044        return new StreamingValidatorImpl(this, vc);
045      }
046    }