Package software.amazon.awssdk.core.io
Class SdkFilterInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- software.amazon.awssdk.core.io.SdkFilterInputStream
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Releasable
- Direct Known Subclasses:
BytesReadTrackingInputStream
,Crc32ChecksumCalculatingInputStream
,Crc32ChecksumValidatingInputStream
,ReleasableInputStream
,ResponseInputStream
public class SdkFilterInputStream extends FilterInputStream implements Releasable
Base class for AWS Java SDK specificFilterInputStream
.
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
SdkFilterInputStream(InputStream in)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
abort()
Can be used to provide abortion logic prior to throwing the AbortedException.protected void
abortIfNeeded()
Aborts with subclass specific abortion logic executed if needed.int
available()
void
close()
void
mark(int readlimit)
boolean
markSupported()
int
read()
int
read(byte[] b, int off, int len)
void
release()
Releases the allocated resource.void
reset()
long
skip(long n)
-
Methods inherited from class java.io.FilterInputStream
read
-
-
-
-
Constructor Detail
-
SdkFilterInputStream
protected SdkFilterInputStream(InputStream in)
-
-
Method Detail
-
abortIfNeeded
protected final void abortIfNeeded()
Aborts with subclass specific abortion logic executed if needed. Note the interrupted status of the thread is cleared by this method.- Throws:
AbortedException
- if found necessary.
-
abort
protected void abort()
Can be used to provide abortion logic prior to throwing the AbortedException. No-op by default.
-
read
public int read() throws IOException
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
read
public int read(byte[] b, int off, int len) throws IOException
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
skip
public long skip(long n) throws IOException
- Overrides:
skip
in classFilterInputStream
- Throws:
IOException
-
available
public int available() throws IOException
- Overrides:
available
in classFilterInputStream
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterInputStream
- Throws:
IOException
-
mark
public void mark(int readlimit)
- Overrides:
mark
in classFilterInputStream
-
reset
public void reset() throws IOException
- Overrides:
reset
in classFilterInputStream
- Throws:
IOException
-
markSupported
public boolean markSupported()
- Overrides:
markSupported
in classFilterInputStream
-
release
public void release()
Description copied from interface:Releasable
Releases the allocated resource. This method should not be called except by the caller who allocated the resource at the very top of the call stack. This allows, typically, aCloseable
resource to be not unintentionally released owing to the calling of theCloseable.close()
methods by implementation deep down in the call stack.For example, the creation of a
ResettableInputStream
would entail physically opening a file. If the opened file is meant to be closed only (in a finally block) by the very same code block that created it, then it is necessary that the release method must not be called while the execution is made in other stack frames. In such case, as other stack frames may inadvertently or indirectly call the close method of the stream, the creator of the stream would need to explicitly disable the accidental closing viaResettableInputStream#disableClose()
, so that the release method becomes the only way to truly close the opened file.- Specified by:
release
in interfaceReleasable
-
-