Class UpdateSensitiveClobLocatorReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable

    class UpdateSensitiveClobLocatorReader
    extends java.io.Reader
    Wraps a Buffered Clob locator reader and watches out for updates on the Clob associated with it. Before a read operation is performed on the Reader this stream verifies that the underlying Clob has not changed and if it has it recreates the specific streams.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      private void identifyAndReplaceObseleteStream()
      Verifies whether the current updateCount matches the updateCount of the Clob object and if it does not it recreates the stream.
      int read()  
      int read​(char[] c, int off, int len)  
      private java.io.Reader reCreateStream()
      Re-creates the underlying Locator stream with the current position and the length values if specified.
      • Methods inherited from class java.io.Reader

        mark, markSupported, nullReader, read, read, ready, reset, skip, transferTo
      • Methods inherited from class java.lang.Object

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

      • r

        private java.io.BufferedReader r
      • updateCount

        private long updateCount
      • currentPos

        private long currentPos
      • length

        private long length
    • Constructor Detail

      • UpdateSensitiveClobLocatorReader

        protected UpdateSensitiveClobLocatorReader​(ClientConnection con,
                                                   ClientClob clob)
                                            throws SqlException
        Initializes the Reader, updateCount, currentPos and the connection to the appropriate values.
        Parameters:
        con - connection to be used to read the Clob value from the server
        clob - the Clob object associated with this stream.
        Throws:
        SqlException
      • UpdateSensitiveClobLocatorReader

        protected UpdateSensitiveClobLocatorReader​(ClientConnection con,
                                                   ClientClob clob,
                                                   long pos,
                                                   long len)
                                            throws SqlException
        Initializes the Reader, updateCount, currentPos, length and the connection to the appropriate values.
        Parameters:
        con - connection to be used to read the Clob value from the server
        clob - the Clob object associated with this reader.
        pos - the position from which the first read begins.
        len - the length in bytes of the partial value to be retrieved.
        Throws:
        SqlException
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Overrides:
        read in class java.io.Reader
        Throws:
        java.io.IOException
        See Also:
        Reader.read()
      • read

        public int read​(char[] c,
                        int off,
                        int len)
                 throws java.io.IOException
        Specified by:
        read in class java.io.Reader
        Throws:
        java.io.IOException
        See Also:
        Reader.read(char[], int, int)
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class java.io.Reader
        Throws:
        java.io.IOException
        See Also:
        Reader.close()
      • identifyAndReplaceObseleteStream

        private void identifyAndReplaceObseleteStream()
                                               throws java.io.IOException
        Verifies whether the current updateCount matches the updateCount of the Clob object and if it does not it recreates the stream.
        Throws:
        java.io.IOException - If any exception occurs upon Locator stream creation.
      • reCreateStream

        private java.io.Reader reCreateStream()
                                       throws SqlException
        Re-creates the underlying Locator stream with the current position and the length values if specified.
        Throws:
        SqlException