1 package org.relaxng.datatype; 2 3 /** 4 * Datatype streaming validator. 5 * 6 * <p> 7 * The streaming validator is an optional feature that is useful for 8 * certain Datatypes. It allows the caller to incrementally provide 9 * the literal. 10 * 11 * @author <a HREF="mailto:jjc@jclark.com">James Clark</a> 12 * @author <a HREF="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a> 13 */ 14 public interface DatatypeStreamingValidator { 15 16 /** 17 * Passes an additional fragment of the literal. 18 * 19 * <p> 20 * The application can call this method several times, then call 21 * the isValid method (or the checkValid method) to check the validity 22 * of the accumulated characters. 23 */ 24 void addCharacters( char[] buf, int start, int len ); 25 26 /** 27 * Tells if the accumulated literal is valid with respect to 28 * the underlying Datatype. 29 * 30 * @return 31 * True if it is valid. False if otherwise. 32 */ 33 boolean isValid(); 34 35 /** 36 * Similar to the isValid method, but this method throws 37 * Exception (with possibly diagnostic information), instead of 38 * returning false. 39 * 40 * @exception DatatypeException 41 * If the callee supports the diagnosis and the accumulated 42 * literal is invalid, then this exception that possibly 43 * contains diagnosis information is thrown. 44 */ 45 void checkValid() throws DatatypeException; 46 } 47