org.apache.derby.client.am
Class UpdateSensitiveClobLocatorReader

java.lang.Object
  extended by java.io.Reader
      extended by org.apache.derby.client.am.UpdateSensitiveClobLocatorReader
All Implemented Interfaces:
java.io.Closeable, java.lang.Readable

public 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.


Field Summary
private  Clob clob
           
private  Connection con
           
private  long currentPos
           
private  long length
           
private  java.io.BufferedReader r
           
private  long updateCount
           
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
protected UpdateSensitiveClobLocatorReader(Connection con, Clob clob)
          Initializes the Reader, updateCount, currentPos and the connection to the appropriate values.
protected UpdateSensitiveClobLocatorReader(Connection con, Clob clob, long pos, long len)
          Initializes the Reader, updateCount, currentPos, length and the connection to the appropriate values.
 
Method Summary
 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)
           
protected  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, read, read, ready, reset, skip
 
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

con

private Connection con

clob

private Clob clob

updateCount

private long updateCount

currentPos

private long currentPos

length

private long length
Constructor Detail

UpdateSensitiveClobLocatorReader

protected UpdateSensitiveClobLocatorReader(Connection con,
                                           Clob 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(Connection con,
                                           Clob 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.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

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

Throws:
SqlException

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.