org.apache.axiom.om.util
Class DetachableInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by org.apache.axiom.om.util.DetachableInputStream
All Implemented Interfaces:
Closeable

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
DetachableInputStream(InputStream in)
           
 
Method Summary
 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
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 © 2004-2012 The Apache Software Foundation. All Rights Reserved.