It looks like it is a bug of RI. Also, I changed one line to: byte [] data = serialBlob.getBytes(2, 10); and got another exception on RI: Exception in thread "Main Thread" java.lang.ArrayIndexOutOfBoundsException: 8
At the same time byte [] data = serialBlob.getBytes(1, 10); works fine on RI, which seems to be illogical. On 12/11/06, Andrew Zhang <[EMAIL PROTECTED]> wrote:
Hi folks, SerialBlob spec points out that getBytes(long position, int length) should throw SerialException if the given starting position is out of bounds. But RI also throws SerialException when the position is in the bound of the array in some other cases. Consider following code: public void testGetBytesJI1() throws Exception { byte[] buf = { 1, 2, 3, 4, 5, 6, 7, 8 }; SerialBlob serialBlob = new SerialBlob(buf); byte [] data = serialBlob.getBytes(2, 1); assertEquals(1, data.length); assertEquals(2, data[0]); } IMO, the starting position 2 and the length 1 are both valid. But RI throws SerialException with message "Invalid arguments: position cannot be less that 1". Is it a bug of RI? Or did I missing something? Any suggestions? Thanks in advance! -- Best regards, Andrew Zhang