You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/12/22 14:01:50 UTC
svn commit: r489642 - in /harmony/enhanced/classlib/trunk/modules/sql/src:
main/java/javax/sql/rowset/serial/
main/java/org/apache/harmony/sql/internal/nls/
test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/
Author: tellison
Date: Fri Dec 22 05:01:49 2006
New Revision: 489642
URL: http://svn.apache.org/viewvc?view=rev&rev=489642
Log:
Apply patch for HARMONY-2835 ([classlib][sql] Implementation for SerialBlob.setBytes(long, byte[]) and SerialBlob.setBytes(long, byte[], int, int))
Modified:
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialBlob.java
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties
harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialBlobTest.java
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialBlob.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialBlob.java?view=diff&rev=489642&r1=489641&r2=489642
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialBlob.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialBlob.java Fri Dec 22 05:01:49 2006
@@ -186,7 +186,7 @@
/*
* Returns true if the bytes array contains exactly the same elements from
* start position to start + subBytes.length as subBytes. Otherwise returns
- * false.
+ * false.
*/
private boolean match(byte[] bytes, int start, byte[] subBytes) {
for (int i = 0; i < subBytes.length;) {
@@ -203,13 +203,20 @@
}
public int setBytes(long pos, byte[] theBytes) throws SerialException,
- SQLException, NotImplementedException {
- throw new NotImplementedException();
+ SQLException {
+ return setBytes(pos, theBytes, 0, theBytes.length);
}
- public int setBytes(long pos, byte[] theBytes, int offset, int len)
- throws SQLException, NotImplementedException {
- throw new NotImplementedException();
+ public int setBytes(long pos, byte[] theBytes, int offset, int length)
+ throws SQLException {
+ if (pos < 1 || length < 0 || pos > (len - length + 1)) {
+ throw new SerialException(Messages.getString("sql.15")); // $NON-NLS-1$
+ }
+ if (offset < 0 || length < 0 || offset > (theBytes.length - length)) {
+ throw new SerialException(Messages.getString("sql.16")); // $NON-NLS-1$
+ }
+ System.arraycopy(theBytes, offset, buf, (int) pos - 1, length);
+ return length;
}
public void truncate(long len) throws SerialException,
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties?view=diff&rev=489642&r1=489641&r2=489642
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties Fri Dec 22 05:01:49 2006
@@ -29,3 +29,5 @@
sql.12=Cannot serialize empty URL instance
sql.13=Cannot instantiate a SerialBlob object with a null Blob object
sql.14=Invalid starting position or length
+sql.15=Invalid position in BLOB object set
+sql.16=Invalid offset in byte array set
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialBlobTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialBlobTest.java?view=diff&rev=489642&r1=489641&r2=489642
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialBlobTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialBlobTest.java Fri Dec 22 05:01:49 2006
@@ -141,6 +141,128 @@
}
}
+ public void testSetBytesJ$B() throws Exception {
+ byte[] buf = { 1, 2, 3, 4, 5, 6, 7, 8 };
+ byte[] theBytes = { 9, 10, 11 };
+ SerialBlob serialBlob = new SerialBlob(buf);
+
+ int count = serialBlob.setBytes(1, theBytes);
+ byte[] res = serialBlob.getBytes(1, buf.length);
+ byte[] expected = { 9, 10, 11, 4, 5, 6, 7, 8 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(3, count);
+
+ count = serialBlob.setBytes(2, theBytes);
+ res = serialBlob.getBytes(1, buf.length);
+ expected = new byte[] { 9, 9, 10, 11, 5, 6, 7, 8 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(3, count);
+
+ count = serialBlob.setBytes(6, theBytes);
+ res = serialBlob.getBytes(1, buf.length);
+ expected = new byte[] { 9, 9, 10, 11, 5, 9, 10, 11 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(3, count);
+
+ try {
+ serialBlob.setBytes(-1, theBytes);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ try {
+ serialBlob.setBytes(10, theBytes);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ // Non bug difference from RI, Harmony-2836
+ try {
+ serialBlob.setBytes(7, theBytes);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ }
+
+ public void testSetBytesJ$BII() throws Exception {
+ byte[] buf = { 1, 2, 3, 4, 5, 6, 7, 8 };
+ byte[] theBytes = { 9, 10, 11 };
+ SerialBlob serialBlob = new SerialBlob(buf);
+
+ int count = serialBlob.setBytes(1, theBytes, 0, 3);
+ byte[] res = serialBlob.getBytes(1, buf.length);
+ byte[] expected = { 9, 10, 11, 4, 5, 6, 7, 8 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(3, count);
+
+ count = serialBlob.setBytes(3, theBytes, 1, 2);
+ res = serialBlob.getBytes(1, buf.length);
+ expected = new byte[] { 9, 10, 10, 11, 5, 6, 7, 8 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(2, count);
+
+ count = serialBlob.setBytes(6, theBytes, 0, 2);
+ res = serialBlob.getBytes(1, buf.length);
+ expected = new byte[] { 9, 10, 10, 11, 5, 9, 10, 8 };
+ assertTrue(Arrays.equals(expected, res));
+ assertEquals(2, count);
+
+ try {
+ serialBlob.setBytes(7, theBytes, 0, 10);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ try {
+ serialBlob.setBytes(-1, theBytes, 0, 2);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ try {
+ serialBlob.setBytes(10, theBytes, 0, 2);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ try {
+ serialBlob.setBytes(1, theBytes, -1, 2);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ try {
+ serialBlob.setBytes(1, theBytes, 0, 10);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ // Non bug difference from RI, Harmony-2836
+ try {
+ serialBlob.setBytes(7, theBytes, 0, 3);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ // Non bug difference from RI, Harmony-2836
+ try {
+ serialBlob.setBytes(7, theBytes, 0, -1);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+ }
+
public void testPosition$BJ() throws Exception {
byte[] buf = { 1, 2, 3, 4, 5, 6, 7, 8 };
SerialBlob serialBlob = new SerialBlob(buf);