Top Description Fields Constructors Methods
org.apache.derby.client.am

pack-priv Class ClobLocatorInputStream

extends InputStream
Class Inheritance
Imports
java.io.IOException, .InputStream, org.apache.derby.shared.common.sanity.SanityManager

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.

Field Summary

Modifier and TypeField and Description
private final ClientClob
clob

The Clob to be accessed.

private final ClientConnection
connection

Connection used to read Clob from server.

private long
currentPos

Current position in the underlying Clob.

Constructor Summary

AccessConstructor and Description
pack-priv
ClobLocatorInputStream(ClientConnection
connection to be used to read the Clob value from the server
connection
,
ClientClob
Clob object that contains locator for the Clob value on the server.
clob
)

Create an InputStream for reading the Clob value represented by the given locator based Clob object.

pack-priv
ClobLocatorInputStream(ClientConnection
connection to be used to read the Clob value from the server
connection
,
ClientClob
Clob object that contains locator for the Clob value on the server.
clob
,
long
the position inside the Clob from which the reading must begin.
pos
)

Create an InputStream for reading the Clob value represented by the given locator based Clob object.

Method Summary

Modifier and TypeMethod and Description
private byte[]

Returns:

The Byte corresponding to the String that was input.
getBytesFromString
(String
the input String.
str
)

Returns a Byte array from the String passed as Input.

public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.
public int
read(byte[]
the buffer into which the data is read.
b
,
int
the start offset in array b at which the data is written.
off
,
int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.
private byte[]

Returns:

byte[] containing the read bytes
readBytes
(int
number of bytes to read
len
)

Read the next len bytes of the Clob value from the server.

Inherited from java.io.InputStream:
availableclosemarkmarkSupportednullInputStreamreadreadAllBytesreadNBytesreadNBytesresetskipskipNBytestransferTo

Field Detail

clobback to summary
private final ClientClob clob

The Clob to be accessed.

connectionback to summary
private final ClientConnection connection

Connection used to read Clob from server.

currentPosback to summary
private long currentPos

Current position in the underlying Clob. Clobs are indexed from 1

Constructor Detail

ClobLocatorInputStreamback to summary
pack-priv 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:ClientConnection

connection to be used to read the Clob value from the server

clob:ClientClob

Clob object that contains locator for the Clob value on the server.

ClobLocatorInputStreamback to summary
pack-priv 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:ClientConnection

connection to be used to read the Clob value from the server

clob:ClientClob

Clob object that contains locator for the Clob value on the server.

pos:long

the position inside the Clob from which the reading must begin.

Method Detail

getBytesFromStringback to summary
private byte[] getBytesFromString(String str)

Returns a Byte array from the String passed as Input.

Parameters
str:String

the input String.

Returns:byte[]

The Byte corresponding to the String that was input.

readback to summary
public int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Exceptions
IOException:
if an I/O error occurs.
See Also
This method fetches one byte at a time from the server. For more efficient retrieval, use #read(byte[]).
readback to summary
public int read(byte[] b, int off, int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
See Also
java.io.InputStream#read(byte[], int, int)
readBytesback to summary
private byte[] readBytes(int len) throws IOException

Read the next len bytes of the Clob value from the server.

Parameters
len:int

number of bytes to read

Returns:byte[]

byte[] containing the read bytes

Exceptions
IOException:
Wrapped SqlException if reading from server fails.