Class ProxyInputStream
- All Implemented Interfaces:
- Closeable,- AutoCloseable
- Direct Known Subclasses:
- AutoCloseInputStream,- BOMInputStream,- BoundedInputStream,- CloseShieldInputStream,- CountingInputStream,- MarkShieldInputStream,- ObservableInputStream,- SwappedDataInputStream,- TaggedInputStream,- TeeInputStream
FilterInputStream, by passing all method calls on to the proxied stream, not changing which methods are called.
 
 It is an alternative base class to FilterInputStream to increase reusability, because FilterInputStream changes the methods being called,
 such as read(byte[]) to read(byte[], int, int).
 
In addition, this class allows you to:
- notify a subclass that n bytes are about to be read through beforeRead(int)
- notify a subclass that n bytes were read through afterRead(int)
- notify a subclass that an exception was caught through handleIOException(IOException)
- unwrap()itself
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected static classProxyInputStream.AbstractBuilder<T,B extends AbstractStreamBuilder<T, B>> Abstracts builder properties for subclasses.
- 
Field SummaryFields inherited from class java.io.FilterInputStreamin
- 
Constructor SummaryConstructorsModifierConstructorDescriptionProxyInputStream(InputStream proxy) Constructs a new ProxyInputStream.protectedProxyInputStream(InputStream proxy, ProxyInputStream.AbstractBuilder<?, ?> builder) Constructs a new ProxyInputStream.protectedProxyInputStream(ProxyInputStream.AbstractBuilder<?, ?> builder) Constructs a new ProxyInputStream.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidafterRead(int n) Called by thereadmethods after the proxied call has returned successfully.intInvokes the delegate'sInputStream.available()method.protected voidbeforeRead(int n) Invoked by thereadmethods before the call is proxied.voidclose()Invokes the delegate'sInputStream.close()method.protected voidHandles any IOExceptions thrown; by default, throws the given exception.voidmark(int readLimit) Invokes the delegate'sInputStream.mark(int)method.booleanInvokes the delegate'sInputStream.markSupported()method.intread()Invokes the delegate'sInputStream.read()method unless the stream is closed.intread(byte[] b) Invokes the delegate'sInputStream.read(byte[])method.intread(byte[] b, int off, int len) Invokes the delegate'sInputStream.read(byte[], int, int)method.voidreset()Invokes the delegate'sInputStream.reset()method.Sets the underlying input stream.longskip(long n) Invokes the delegate'sInputStream.skip(long)method.unwrap()Unwraps this instance by returning the underlyingInputStream.
- 
Constructor Details- 
ProxyInputStreamConstructs a new ProxyInputStream.- Parameters:
- builder- How to build an instance.
- Throws:
- IOException- if an I/O error occurs.
- Since:
- 2.18.0
 
- 
ProxyInputStreamConstructs a new ProxyInputStream.- Parameters:
- proxy- the InputStream to proxy.
 
- 
ProxyInputStreamConstructs a new ProxyInputStream.- Parameters:
- proxy- the InputStream to proxy.
- builder- How to build an instance.
- Since:
- 2.18.0
 
 
- 
- 
Method Details- 
afterReadCalled by thereadmethods after the proxied call has returned successfully. The argument is the number of bytes returned to the caller orEOFif the end of stream was reached.The default delegates to the consumer given to ProxyInputStream.AbstractBuilder.setAfterRead(IOIntConsumer).Alternatively, a subclasses can override this method to add post-processing functionality without having to override all the read methods. Note this method is not called from skip(long)orreset(). You need to explicitly override those methods if you want to add post-processing steps also to them.- Parameters:
- n- number of bytes read, or- EOFif the end of stream was reached.
- Throws:
- IOException- Thrown by a subclass or the consumer given to- ProxyInputStream.AbstractBuilder.setAfterRead(IOIntConsumer).
- Since:
- 2.0
 
- 
availableInvokes the delegate'sInputStream.available()method.- Overrides:
- availablein class- FilterInputStream
- Returns:
- the number of available bytes, 0 if the stream is closed.
- Throws:
- IOException- if an I/O error occurs.
 
- 
beforeReadInvoked by thereadmethods before the call is proxied. The number of bytes that the caller wanted to read (1 for theread()method, buffer length forread(byte[]), etc.) is given as an argument.Subclasses can override this method to add common pre-processing functionality without having to override all the read methods. The default implementation does nothing. Note this method is not called from skip(long)orreset(). You need to explicitly override those methods if you want to add pre-processing steps also to them.- Parameters:
- n- number of bytes that the caller asked to be read.
- Throws:
- IOException- if the pre-processing fails in a subclass.
- Since:
- 2.0
 
- 
closeInvokes the delegate'sInputStream.close()method.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Overrides:
- closein class- FilterInputStream
- Throws:
- IOException- if an I/O error occurs.
 
- 
handleIOExceptionHandles any IOExceptions thrown; by default, throws the given exception.This method provides a point to implement custom exception handling. The default behavior is to re-throw the exception. - Parameters:
- e- The IOException thrown.
- Throws:
- IOException- if an I/O error occurs.
- Since:
- 2.0
 
- 
markInvokes the delegate'sInputStream.mark(int)method.- Overrides:
- markin class- FilterInputStream
- Parameters:
- readLimit- read ahead limit.
 
- 
markSupportedInvokes the delegate'sInputStream.markSupported()method.- Overrides:
- markSupportedin class- FilterInputStream
- Returns:
- trueif this stream instance supports the mark and reset methods;- falseotherwise.
- See Also:
 
- 
readInvokes the delegate'sInputStream.read()method unless the stream is closed.- Overrides:
- readin class- FilterInputStream
- Returns:
- the byte read or EOFif we reached the end of stream.
- Throws:
- IOException- if an I/O error occurs.
 
- 
readInvokes the delegate'sInputStream.read(byte[])method.- Overrides:
- readin class- FilterInputStream
- Parameters:
- b- the buffer to read the bytes into.
- Returns:
- the number of bytes read or EOFif we reached the end of stream.
- Throws:
- IOException-- If the first byte cannot be read for any reason other than the end of the file,
- if the input stream has been closed, or
- if some other I/O error occurs.
 
 
- 
readInvokes the delegate'sInputStream.read(byte[], int, int)method.- Overrides:
- readin class- FilterInputStream
- Parameters:
- b- the buffer to read the bytes into.
- off- The start offset.
- len- The number of bytes to read.
- Returns:
- the number of bytes read or EOFif we reached the end of stream.
- Throws:
- IOException-- If the first byte cannot be read for any reason other than the end of the file,
- if the input stream has been closed, or
- if some other I/O error occurs.
 
 
- 
resetInvokes the delegate'sInputStream.reset()method.- Overrides:
- resetin class- FilterInputStream
- Throws:
- IOException- if this stream has not been marked or if the mark has been invalidated.
 
- 
setReferenceSets the underlying input stream.- Parameters:
- in- The input stream to set in- FilterInputStream.in.
- Returns:
- this instance.
- Since:
- 2.19.0
 
- 
skipInvokes the delegate'sInputStream.skip(long)method.- Overrides:
- skipin class- FilterInputStream
- Parameters:
- n- the number of bytes to skip.
- Returns:
- the actual number of bytes skipped.
- Throws:
- IOException- if the stream does not support seek, or if some other I/O error occurs.
 
- 
unwrapUnwraps this instance by returning the underlyingInputStream.Use with caution; useful to query the underlying InputStream.- Returns:
- the underlying InputStream.
- Since:
- 2.16.0
 
 
-