Class ProxyInputStream

    • Field Summary

      • Fields inherited from class java.io.FilterInputStream

        in
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void afterRead​(int n)
      Called by the read methods after the proxied call has returned successfully.
      int available()
      Invokes the delegate's InputStream.available() method.
      protected void beforeRead​(int n)
      Invoked by the read methods before the call is proxied.
      void close()
      Invokes the delegate's InputStream.close() method.
      protected void handleIOException​(java.io.IOException e)
      Handles any IOExceptions thrown; by default, throws the given exception.
      void mark​(int readLimit)
      Invokes the delegate's InputStream.mark(int) method.
      boolean markSupported()
      Invokes the delegate's InputStream.markSupported() method.
      int read()
      Invokes the delegate's InputStream.read() method unless the stream is closed.
      int read​(byte[] b)
      Invokes the delegate's InputStream.read(byte[]) method.
      int read​(byte[] b, int off, int len)
      Invokes the delegate's InputStream.read(byte[], int, int) method.
      void reset()
      Invokes the delegate's InputStream.reset() method.
      long skip​(long n)
      Invokes the delegate's InputStream.skip(long) method.
      java.io.InputStream unwrap()
      Unwraps this instance by returning the underlying InputStream.
      • Methods inherited from class java.io.InputStream

        nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ProxyInputStream

        protected ProxyInputStream​(ProxyInputStream.AbstractBuilder<?,​?> builder)
                            throws java.io.IOException
        Constructs a new ProxyInputStream.
        Parameters:
        builder - How to build an instance.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.18.0
      • ProxyInputStream

        public ProxyInputStream​(java.io.InputStream proxy)
        Constructs a new ProxyInputStream.
        Parameters:
        proxy - the InputStream to proxy.
      • ProxyInputStream

        protected ProxyInputStream​(java.io.InputStream proxy,
                                   ProxyInputStream.AbstractBuilder<?,​?> builder)
        Constructs a new ProxyInputStream.
        Parameters:
        proxy - the InputStream to proxy.
        builder - How to build an instance.
        Since:
        2.18.0
    • Method Detail

      • afterRead

        protected void afterRead​(int n)
                          throws java.io.IOException
        Called by the read methods after the proxied call has returned successfully. The argument is the number of bytes returned to the caller or EOF if 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) or reset(). 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 EOF if the end of stream was reached.
        Throws:
        java.io.IOException - Thrown by a subclass or the consumer given to ProxyInputStream.AbstractBuilder.setAfterRead(IOIntConsumer).
        Since:
        2.0
      • available

        public int available()
                      throws java.io.IOException
        Invokes the delegate's InputStream.available() method.
        Overrides:
        available in class java.io.FilterInputStream
        Returns:
        the number of available bytes, 0 if the stream is closed.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • beforeRead

        protected void beforeRead​(int n)
                           throws java.io.IOException
        Invoked by the read methods before the call is proxied. The number of bytes that the caller wanted to read (1 for the read() method, buffer length for read(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) or reset(). 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:
        java.io.IOException - if the pre-processing fails in a subclass.
        Since:
        2.0
      • close

        public void close()
                   throws java.io.IOException
        Invokes the delegate's InputStream.close() method.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterInputStream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • handleIOException

        protected void handleIOException​(java.io.IOException e)
                                  throws java.io.IOException
        Handles 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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.0
      • mark

        public void mark​(int readLimit)
        Invokes the delegate's InputStream.mark(int) method.
        Overrides:
        mark in class java.io.FilterInputStream
        Parameters:
        readLimit - read ahead limit.
      • markSupported

        public boolean markSupported()
        Invokes the delegate's InputStream.markSupported() method.
        Overrides:
        markSupported in class java.io.FilterInputStream
        Returns:
        true if this stream instance supports the mark and reset methods; false otherwise.
        See Also:
        mark(int), reset()
      • read

        public int read()
                 throws java.io.IOException
        Invokes the delegate's InputStream.read() method unless the stream is closed.
        Overrides:
        read in class java.io.FilterInputStream
        Returns:
        the byte read or EOF if we reached the end of stream.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • read

        public int read​(byte[] b)
                 throws java.io.IOException
        Invokes the delegate's InputStream.read(byte[]) method.
        Overrides:
        read in class java.io.FilterInputStream
        Parameters:
        b - the buffer to read the bytes into.
        Returns:
        the number of bytes read or EOF if we reached the end of stream.
        Throws:
        java.io.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.
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Invokes the delegate's InputStream.read(byte[], int, int) method.
        Overrides:
        read in class java.io.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 EOF if we reached the end of stream.
        Throws:
        java.io.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.
      • reset

        public void reset()
                   throws java.io.IOException
        Invokes the delegate's InputStream.reset() method.
        Overrides:
        reset in class java.io.FilterInputStream
        Throws:
        java.io.IOException - if this stream has not been marked or if the mark has been invalidated.
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Invokes the delegate's InputStream.skip(long) method.
        Overrides:
        skip in class java.io.FilterInputStream
        Parameters:
        n - the number of bytes to skip.
        Returns:
        the actual number of bytes skipped.
        Throws:
        java.io.IOException - if the stream does not support seek, or if some other I/O error occurs.
      • unwrap

        public java.io.InputStream unwrap()
        Unwraps this instance by returning the underlying InputStream.

        Use with caution; useful to query the underlying InputStream.

        Returns:
        the underlying InputStream.
        Since:
        2.16.0