Class ClobLocatorInputStream

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

    class ClobLocatorInputStream
    extends java.io.InputStream
    An InputStream that will use an locator to fetch the Clob value from the server.

    Closing a ByteArrayInputStream has no effect. The methods in this class can be called after the stream has been closed without generating an IOException.

    This InputStream implementation is pretty basic. No buffering of data is done. Hence, for efficiency #read(byte[]) should be used instead of #read(). Marks are not supported, but it should be pretty simple to extend the implementation to support this. A more efficient skip implementation should also be straight-forward.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private byte[] getBytesFromString​(java.lang.String str)
      Returns a Byte array from the String passed as Input.
      int read()  
      int read​(byte[] b, int off, int len)  
      private byte[] readBytes​(int len)
      Read the next len bytes of the Clob value from the server.
      • Methods inherited from class java.io.InputStream

        available, close, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
      • Methods inherited from class java.lang.Object

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

      • connection

        private final ClientConnection connection
        Connection used to read Clob from server.
      • clob

        private final ClientClob clob
        The Clob to be accessed.
      • currentPos

        private long currentPos
        Current position in the underlying Clob. Clobs are indexed from 1
    • Constructor Detail

      • ClobLocatorInputStream

        ClobLocatorInputStream​(ClientConnection connection,
                               ClientClob clob)
                        throws SqlException
        Create an InputStream for reading the Clob value represented by the given locator based Clob object.
        Parameters:
        connection - connection to be used to read the Clob value from the server
        clob - Clob object that contains locator for the Clob value on the server.
        Throws:
        SqlException
      • ClobLocatorInputStream

        ClobLocatorInputStream​(ClientConnection connection,
                               ClientClob clob,
                               long pos)
                        throws SqlException
        Create an InputStream for reading the Clob value represented by the given locator based Clob object.
        Parameters:
        connection - connection to be used to read the Clob value from the server
        clob - Clob object that contains locator for the Clob value on the server.
        pos - the position inside the Clob from which the reading must begin.
        Throws:
        SqlException
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
        See Also:
        This method fetches one byte at a time from the server. For more efficient retrieval, use #read(byte[]).
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
        See Also:
        InputStream.read(byte[], int, int)
      • readBytes

        private byte[] readBytes​(int len)
                          throws java.io.IOException
        Read the next len bytes of the Clob value from the server.
        Parameters:
        len - number of bytes to read
        Returns:
        byte[] containing the read bytes
        Throws:
        java.io.IOException - Wrapped SqlException if reading from server fails.
      • getBytesFromString

        private byte[] getBytesFromString​(java.lang.String str)
        Returns a Byte array from the String passed as Input.
        Parameters:
        str - the input String.
        Returns:
        The Byte corresponding to the String that was input.