XMLEntityManager.RewindableInputStream (Xerces2 Implementation)
Date: 2016-02-19

org.apache.xerces.impl

## Class XMLEntityManager.RewindableInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.xerces.impl.XMLEntityManager.RewindableInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
  Enclosing class:
    XMLEntityManager

      protected final class XMLEntityManager.RewindableInputStream
      extends java.io.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!
  Author:
    Neil Graham, IBM, Glenn Marcy, IBM

  # INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `XMLEntityManager.RewindableInputStream(java.io.InputStream is)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()`
    `void` | `close()`
    `void` | `mark(int howMuch)`
    `boolean` | `markSupported()`
    `int` | `read()`
    `int` | `read(byte[] b, int off, int len)`
    `int` | `readAndBuffer()`
    `void` | `reset()`
    `void` | `rewind()`
    `void` | `setStartOffset(int offset)`
    `long` | `skip(long n)`

    - ### Methods inherited from class java.io.InputStream

      `read`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### XMLEntityManager.RewindableInputStream

          public XMLEntityManager.RewindableInputStream(java.io.InputStream is)

  - ### Method Detail

    - #### setStartOffset

          public void setStartOffset(int offset)

    - #### rewind

          public void rewind()

    - #### readAndBuffer

          public int readAndBuffer()
                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### read

          public int read()
                   throws java.io.IOException

      Specified by:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws java.io.IOException

      Overrides:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### skip

          public long skip(long n)
                    throws java.io.IOException

      Overrides:
        `skip` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### available

          public int available()
                        throws java.io.IOException

      Overrides:
        `available` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### mark

          public void mark(int howMuch)

      Overrides:
        `mark` in class `java.io.InputStream`

    - #### reset

          public void reset()

      Overrides:
        `reset` in class `java.io.InputStream`

    - #### markSupported

          public boolean markSupported()

      Overrides:
        `markSupported` in class `java.io.InputStream`

    - #### close

          public void close()
                     throws java.io.IOException

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Overrides:
        `close` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.