Hi Andrew, Sorry for the late reply. I've run a couple of tests for SerialClob. IMO it is obvious that RI has bugs in either setString() or getSubString(). So I am +1 for following the spec.
Thanks, 2007/3/12, Andrew Zhang <[EMAIL PROTECTED]>:
On 3/9/07, Andrew Zhang <[EMAIL PROTECTED]> wrote: > > Hi, > > Noticed that RI doesn't set correct value with SerialClob.setString(long, > String, int, int)[1]. Consider following code: > public void testSetStringJLStringII() throws Exception { > String s = "hello"; > char[] buf = s.toCharArray(); > SerialClob serialClob = new SerialClob(buf); > > serialClob.setString(1, "olleh", 0, 5); > String sub = serialClob.getSubString(1, 5); > assertEquals("olleh", sub); > > serialClob.setString(2, "mmnn",1, 2); > sub = serialClob.getSubString(1, 5); > assertEquals("omneh", sub); // RI fails here > } > > After setting, RI fails the test with value "onneh". The test is > straightforward. Do I miss something? Or it's RI's bug? > Thanks! > If no one objects, I'll consider it as a bug of RI, and won't follow RI for this case. > > [1] > Following is quoted from java spec: > public int setString(long pos, String str, int offset, int length) throws > SerialException > Writes len characters of str, starting at character offset, to the CLOB > value that this Clob represents. > > Parameters - > pos - the position at which to start writing to the CLOB value that this > SerialClob object represents; the first position is 1; must not be less than > 1 nor greater than the length of this SerialClob object > str - the string to be written to the CLOB value that this Clob object > represents > offset - the offset into str to start reading the characters to be written > length - the number of characters to be written
-- Alexei Zakharov, Intel ESSD