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 2007/01/11 18:23:04 UTC
svn commit: r495298 - 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: Thu Jan 11 09:23:01 2007
New Revision: 495298
URL: http://svn.apache.org/viewvc?view=rev&rev=495298
Log:
Apply patch HARMONY-2978 ([classlib][sql] Implementation for SerialBlob.setBinaryStream(long pos))
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=495298&r1=495297&r2=495298
==============================================================================
--- 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 Thu Jan 11 09:23:01 2007
@@ -24,7 +24,6 @@
import java.sql.Blob;
import java.sql.SQLException;
-import org.apache.harmony.luni.util.NotImplementedException;
import org.apache.harmony.sql.internal.nls.Messages;
public class SerialBlob implements Blob, Serializable, Cloneable {
@@ -198,8 +197,15 @@
}
public OutputStream setBinaryStream(long pos) throws SerialException,
- SQLException, NotImplementedException {
- throw new NotImplementedException();
+ SQLException {
+ if (blob == null) {
+ throw new SerialException(Messages.getString("sql.18")); //$NON-NLS-1$
+ }
+ OutputStream os = blob.setBinaryStream(pos);
+ if (os == null) {
+ throw new SerialException(Messages.getString("sql.18")); //$NON-NLS-1$
+ }
+ return os;
}
public int setBytes(long pos, byte[] theBytes) 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=495298&r1=495297&r2=495298
==============================================================================
--- 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 Thu Jan 11 09:23:01 2007
@@ -31,4 +31,5 @@
sql.14=Invalid starting position or length
sql.15=Invalid position in BLOB object set
sql.16=Invalid offset in byte array set
-sql.17=javax.sql.rowset.serial.SerialException: Length more than what can be truncated
\ No newline at end of file
+sql.17=javax.sql.rowset.serial.SerialException: Length more than what can be truncated
+sql.18=Unsupported operation. SerialBlob cannot return a writable binary stream, unless instantiated with a Blob object that provides a setBinaryStream() implementation
\ No newline at end of file
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=495298&r1=495297&r2=495298
==============================================================================
--- 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 Thu Jan 11 09:23:01 2007
@@ -17,6 +17,7 @@
package org.apache.harmony.sql.tests.javax.sql.rowset.serial;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
@@ -198,7 +199,7 @@
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 };
@@ -307,10 +308,10 @@
} catch (SerialException e) {
// expected
}
-
+
// Non bug difference from RI, Harmony-2937
assertEquals(3L, serialBlob.length());
-
+
try {
serialBlob.truncate(10);
fail("should throw SerialException");
@@ -320,7 +321,35 @@
}
}
-
+
+ public void testSetBinaryStreamJ() throws Exception {
+ MockSerialBlob mockBlob = new MockSerialBlob();
+ mockBlob.binaryStream = new ByteArrayOutputStream();
+ SerialBlob serialBlob = new SerialBlob(mockBlob);
+ OutputStream os = serialBlob.setBinaryStream(1);
+ assertTrue(mockBlob.isSetBinaryStreamInvoked);
+ assertEquals(1L, mockBlob.pos);
+ assertSame(mockBlob.binaryStream, os);
+
+ mockBlob.binaryStream = null;
+ try {
+ serialBlob.setBinaryStream(1);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+
+ byte[] buf = new byte[1];
+ serialBlob = new SerialBlob(buf);
+ try {
+ // Non bug difference from RI, Harmony-2971
+ serialBlob.setBinaryStream(1);
+ fail("should throw SerialException");
+ } catch (SerialException e) {
+ // expected
+ }
+ }
+
private void assertBlobPosition_BytePattern(Blob blob)
throws SerialException, SQLException {
byte[] pattern;
@@ -441,8 +470,14 @@
public boolean isGetBytesInvoked;
+ public boolean isSetBinaryStreamInvoked;
+
public boolean isAbnormal;
+ public OutputStream binaryStream;
+
+ public long pos;
+
public MockSerialBlob() {
}
@@ -476,7 +511,9 @@
}
public OutputStream setBinaryStream(long pos) throws SQLException {
- return null;
+ isSetBinaryStreamInvoked = true;
+ this.pos = pos;
+ return binaryStream;
}
public int setBytes(long pos, byte[] theBytes) throws SQLException {