Class XMLEntityManager.RewindableInputStream

java.lang.Object
java.io.InputStream
org.apache.xerces.impl.XMLEntityManager.RewindableInputStream
All Implemented Interfaces:
Closeable, AutoCloseable
Enclosing class:
XMLEntityManager

protected final class XMLEntityManager.RewindableInputStream extends InputStream
This class wraps the byte inputstreams we're presented with. We need it because java.io.InputStreams don't provide functionality to reread processed bytes, and they have a habit of reading more than one character when you call their read() methods. This means that, once we discover the true (declared) encoding of a document, we can neither backtrack to read the whole doc again nor start reading where we are with a new reader. This class allows rewinding an inputStream by allowing a mark to be set, and the stream reset to that position. The class assumes that it needs to read one character per invocation when it's read() method is inovked, but uses the underlying InputStream's read(char[], offset length) method--it won't buffer data read this way!

INTERNAL:

Usage of this class is not supported. It may be altered or removed at any time.
Author:
Neil Graham, IBM, Glenn Marcy, IBM