1 57 58 package org.enhydra.apache.xerces.validators.datatype; 59 60 import java.util.Hashtable ; 61 62 import org.enhydra.apache.xerces.readers.DefaultEntityHandler; 63 import org.enhydra.apache.xerces.utils.StringPool; 64 import org.enhydra.apache.xerces.utils.XMLMessages; 65 66 67 112 public class ENTITYDatatypeValidator extends StringDatatypeValidator { 113 114 public static final int ENTITY_VALIDATE = 0; 115 116 public ENTITYDatatypeValidator () throws InvalidDatatypeFacetException { 117 this( null, null, false ); } 119 120 public ENTITYDatatypeValidator ( DatatypeValidator base, Hashtable facets, 121 boolean derivedByList ) throws InvalidDatatypeFacetException { 122 123 super (base, facets, derivedByList); 125 126 if ( derivedByList ) 128 return; 129 130 setTokenType(SPECIAL_TOKEN_ENTITY); 131 } 132 133 136 public short getWSFacet(){ 137 return COLLAPSE; 138 } 139 140 156 public Object validate(String content, Object state ) throws InvalidDatatypeValueException{ 157 super.validate(content, state); 159 160 StateMessageDatatype message = (StateMessageDatatype) state; 161 if (message != null && message.getDatatypeState() == ENTITY_VALIDATE) { 162 Object [] params = (Object [])message.getDatatypeObject(); 163 DefaultEntityHandler entityHandler = (DefaultEntityHandler)params[0]; 164 StringPool stringPool = (StringPool)params[1]; 165 166 int attValueHandle = stringPool.addSymbol( content ); 167 if (!entityHandler.isUnparsedEntity( attValueHandle ) ) { 168 InvalidDatatypeValueException error = 169 new InvalidDatatypeValueException( "ENTITY '"+ content +"' is not valid" ); 170 error.setMinorCode(XMLMessages.MSG_ENTITY_INVALID); 171 error.setMajorCode(XMLMessages.VC_ENTITY_DECLARED); 172 throw error; 173 } 174 } 175 176 return null; 177 } 178 179 185 public int compare( String content1, String content2){ 186 return content1.equals(content2)?0:-1; 188 } 189 190 192 195 public Object clone() throws CloneNotSupportedException { 196 throw new CloneNotSupportedException ("clone() is not supported in "+this.getClass().getName()); 197 } 198 } 199 | Popular Tags |