org.apache.axiom.om.util

## Class DetachableInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - org.apache.axiom.om.util.DetachableInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class DetachableInputStream
      extends FilterInputStream

  FilterInputStream that delegates to the original InputStream. When detach() is called, the original InputStream is consumed, and closed. The unread bytes are stored in a local stream. Subsequent requests are serviced by the local stream. Rationale: The detached stream can be closed and its resources freed, but the consumer of the stream can continue to receive data. Cons: If there are a lot of bytes remaining, these are buffered. Currently they are buffered incore (this could be improved to buffer in a file).

- - ### Field Summary

    - ### Fields inherited from class java.io.FilterInputStream

      `in`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DetachableInputStream(InputStream in)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()`
    `void` | `close()`
    `void` | `detach()` Consume the input stream and close it.
    `long` | `length()`
    `void` | `mark(int readlimit)`
    `boolean` | `markSupported()`
    `int` | `read()`
    `int` | `read(byte[] b)`
    `int` | `read(byte[] b, int off, int len)`
    `void` | `reset()`
    `long` | `skip(long n)`

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

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

- - ### Constructor Detail

    - #### DetachableInputStream

          public DetachableInputStream(InputStream in)

  - ### Method Detail

    - #### length

          public long length()
                      throws IOException

      Returns:
        count of bytes read
      Throws:
        `IOException`

    - #### detach

          public void detach()
                      throws IOException

      Consume the input stream and close it. The bytes in the input stream are buffered. (Thus the original input stream can release its resources, but the consumer of the stream can still receive data).
      Throws:
        `IOException`

    - #### available

          public int available()
                        throws IOException

      Overrides:
        `available` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### markSupported

          public boolean markSupported()

      Overrides:
        `markSupported` in class `FilterInputStream`

    - #### mark

          public void mark(int readlimit)

      Overrides:
        `mark` in class `FilterInputStream`

    - #### read

          public int read()
                   throws IOException

      Overrides:
        `read` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### read

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

      Overrides:
        `read` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### read

          public int read(byte[] b)
                   throws IOException

      Overrides:
        `read` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### reset

          public void reset()
                     throws IOException

      Overrides:
        `reset` in class `FilterInputStream`
      Throws:
        `IOException`

    - #### skip

          public long skip(long n)
                    throws IOException

      Overrides:
        `skip` in class `FilterInputStream`
      Throws:
        `IOException`

Copyright © The Apache Software Foundation. All Rights Reserved.