KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > 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 JavaDoc buffer = new StringBuffer JavaDoc();
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 }
56
Popular Tags