Class ProxyReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable
    Direct Known Subclasses:
    CloseShieldReader, TaggedReader, TeeReader

    public abstract class ProxyReader
    extends java.io.FilterReader
    A Proxy stream which acts as expected, that is it passes the method calls on to the proxied stream and doesn't change which methods are being called.

    It is an alternative base class to FilterReader to increase reusability, because FilterReader changes the methods being called, such as read(char[]) to read(char[], int, int).

    • Field Summary

      • Fields inherited from class java.io.FilterReader

        in
      • Fields inherited from class java.io.Reader

        lock
    • Constructor Summary

      Constructors 
      Constructor Description
      ProxyReader​(java.io.Reader proxy)
      Constructs a new ProxyReader.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void afterRead​(int n)
      Invoked by the read methods after the proxied call has returned successfully.
      protected void beforeRead​(int n)
      Invoked by the read methods before the call is proxied.
      void close()
      Invokes the delegate's close() method.
      protected void handleIOException​(java.io.IOException e)
      Handle any IOExceptions thrown.
      void mark​(int idx)
      Invokes the delegate's mark(int) method.
      boolean markSupported()
      Invokes the delegate's markSupported() method.
      int read()
      Invokes the delegate's read() method.
      int read​(char[] chr)
      Invokes the delegate's read(char[]) method.
      int read​(char[] chr, int st, int len)
      Invokes the delegate's read(char[], int, int) method.
      int read​(java.nio.CharBuffer target)
      Invokes the delegate's read(CharBuffer) method.
      boolean ready()
      Invokes the delegate's ready() method.
      void reset()
      Invokes the delegate's reset() method.
      long skip​(long ln)
      Invokes the delegate's skip(long) method.
      • Methods inherited from class java.io.Reader

        nullReader, transferTo
      • Methods inherited from class java.lang.Object

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

      • ProxyReader

        public ProxyReader​(java.io.Reader proxy)
        Constructs a new ProxyReader.
        Parameters:
        proxy - the Reader to delegate to
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Invokes the delegate's read() method.
        Overrides:
        read in class java.io.FilterReader
        Returns:
        the character read or -1 if the end of stream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • read

        public int read​(char[] chr)
                 throws java.io.IOException
        Invokes the delegate's read(char[]) method.
        Overrides:
        read in class java.io.Reader
        Parameters:
        chr - the buffer to read the characters into
        Returns:
        the number of characters read or -1 if the end of stream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • read

        public int read​(char[] chr,
                        int st,
                        int len)
                 throws java.io.IOException
        Invokes the delegate's read(char[], int, int) method.
        Overrides:
        read in class java.io.FilterReader
        Parameters:
        chr - the buffer to read the characters into
        st - The start offset
        len - The number of bytes to read
        Returns:
        the number of characters read or -1 if the end of stream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • read

        public int read​(java.nio.CharBuffer target)
                 throws java.io.IOException
        Invokes the delegate's read(CharBuffer) method.
        Specified by:
        read in interface java.lang.Readable
        Overrides:
        read in class java.io.Reader
        Parameters:
        target - the char buffer to read the characters into
        Returns:
        the number of characters read or -1 if the end of stream
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.0
      • skip

        public long skip​(long ln)
                  throws java.io.IOException
        Invokes the delegate's skip(long) method.
        Overrides:
        skip in class java.io.FilterReader
        Parameters:
        ln - the number of bytes to skip
        Returns:
        the number of bytes to skipped or EOF if the end of stream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • ready

        public boolean ready()
                      throws java.io.IOException
        Invokes the delegate's ready() method.
        Overrides:
        ready in class java.io.FilterReader
        Returns:
        true if the stream is ready to be read
        Throws:
        java.io.IOException - if an I/O error occurs.
      • close

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

        public void mark​(int idx)
                  throws java.io.IOException
        Invokes the delegate's mark(int) method.
        Overrides:
        mark in class java.io.FilterReader
        Parameters:
        idx - read ahead limit
        Throws:
        java.io.IOException - if an I/O error occurs.
      • reset

        public void reset()
                   throws java.io.IOException
        Invokes the delegate's reset() method.
        Overrides:
        reset in class java.io.FilterReader
        Throws:
        java.io.IOException - if an I/O error occurs.
      • markSupported

        public boolean markSupported()
        Invokes the delegate's markSupported() method.
        Overrides:
        markSupported in class java.io.FilterReader
        Returns:
        true if mark is supported, otherwise false
      • beforeRead

        protected void beforeRead​(int n)
                           throws java.io.IOException
        Invoked by the read methods before the call is proxied. The number of chars that the caller wanted to read (1 for the read() method, buffer length for read(char[]), 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 chars that the caller asked to be read
        Throws:
        java.io.IOException - if the pre-processing fails
        Since:
        2.0
      • afterRead

        protected void afterRead​(int n)
                          throws java.io.IOException
        Invoked by the read methods after the proxied call has returned successfully. The number of chars returned to the caller (or -1 if the end of stream was reached) is given as an argument.

        Subclasses can override this method to add common post-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 post-processing steps also to them.

        Parameters:
        n - number of chars read, or -1 if the end of stream was reached
        Throws:
        java.io.IOException - if the post-processing fails
        Since:
        2.0
      • handleIOException

        protected void handleIOException​(java.io.IOException e)
                                  throws java.io.IOException
        Handle any IOExceptions thrown.

        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