Source for org.relaxng.datatype.helpers.StreamingValidatorImpl

   1: package org.relaxng.datatype.helpers;
   2: 
   3: import org.relaxng.datatype.*;
   4: 
   5: /**
   6:  * Dummy implementation of {@link DatatypeStreamingValidator}.
   7:  *
   8:  * <p>
   9:  * This implementation can be used as a quick hack when the performance
  10:  * of streaming validation is not important. And this implementation
  11:  * also shows you how to implement the DatatypeStreamingValidator interface.
  12:  *
  13:  * <p>
  14:  * Typical usage would be:
  15:  * <PRE><XMP>
  16:  * class MyDatatype implements Datatype {
  17:  *     ....
  18:  *     public DatatypeStreamingValidator createStreamingValidator( ValidationContext context ) {
  19:  *         return new StreamingValidatorImpl(this,context);
  20:  *     }
  21:  *     ....
  22:  * }
  23:  * </XMP></PRE>
  24:  *
  25:  * @author <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>
  26:  */
  27: public final class StreamingValidatorImpl implements DatatypeStreamingValidator {
  28: 
  29:         /** This buffer accumulates characters. */
  30:         private final StringBuffer buffer = new StringBuffer();
  31: 
  32:         /** Datatype obejct that creates this streaming validator. */
  33:         private final Datatype baseType;
  34: 
  35:         /** The current context. */
  36:         private final ValidationContext context;
  37: 
  38:         public void addCharacters( char[] buf, int start, int len ) {
  39:                 // append characters to the current buffer.
  40:                 buffer.append(buf,start,len);
  41:         }
  42: 
  43:         public boolean isValid() {
  44:                 return baseType.isValid(buffer.toString(),context);
  45:         }
  46: 
  47:         public void checkValid() throws DatatypeException {
  48:                 baseType.checkValid(buffer.toString(),context);
  49:         }
  50: 
  51:         public StreamingValidatorImpl( Datatype baseType, ValidationContext context ) {
  52:                 this.baseType = baseType;
  53:                 this.context = context;
  54:         }
  55: }