XMLEntityManager.RewindableInputStream (Xerces2 Implementation)
Date: 2024-01-12

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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

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
`XMLEntityManager.RewindableInputStream(java.io.InputStream is)`

Method Summary
`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`
  Overrides:
    `close` in class `java.io.InputStream`
  Throws:
    `java.io.IOException`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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