You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by to...@apache.org on 2007/06/19 04:49:52 UTC

svn commit: r548565 - in /harmony/enhanced/classlib/trunk/modules/sql/src: main/java/javax/sql/rowset/serial/ test/java/org/apache/harmony/sql/tests/java/sql/ test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/

Author: tonywu
Date: Mon Jun 18 19:49:51 2007
New Revision: 548565

URL: http://svn.apache.org/viewvc?view=rev&rev=548565
Log:
Apply patch HARMONY-4224 ([classlib][sql]SerialClob.setAsciiStream does not throw SerialException when its internal Clob.setAsciiStream returns null)

Modified:
    harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialClob.java
    harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
    harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialClobTest.java

Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialClob.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialClob.java?view=diff&rev=548565&r1=548564&r2=548565
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialClob.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SerialClob.java Mon Jun 18 19:49:51 2007
@@ -60,12 +60,10 @@
         if (clob == null) {
             throw new SQLException(Messages.getString("sql.19"));//$NON-NLS-1$
         }
-
-        characterStream = clob.getCharacterStream();
-        asciiStream = clob.getAsciiStream();
-        if (characterStream == null || asciiStream == null) {
-            throw new SQLException(Messages.getString("sql.20"));//$NON-NLS-1$
-        }
+        if ((characterStream = clob.getCharacterStream()) == null
+				&& (asciiStream = clob.getAsciiStream()) == null) {
+			throw new SQLException(Messages.getString("sql.20"));//$NON-NLS-1$
+		}
 
         this.clob = clob;
         origLen = clob.length();
@@ -83,10 +81,12 @@
     }
 
     public long length() throws SerialException {
+        checkValidation();
         return len;
     }
 
     public InputStream getAsciiStream() throws SerialException, SQLException {
+        checkValidation();
         if (clob == null) {
             throw new SerialException(Messages.getString("sql.25")); // $NON-NLS-1$
         }
@@ -94,6 +94,7 @@
     }
 
     public Reader getCharacterStream() throws SerialException {
+        checkValidation();
         return new CharArrayReader(buf);
     }
 
@@ -114,12 +115,14 @@
 
     public long position(Clob searchClob, long start) throws SerialException,
             SQLException {
+        checkValidation();
         String searchString = searchClob.getSubString(1, (int)searchClob.length());
         return position(searchString, start);
     }
 
     public long position(String searchString, long start) throws SerialException,
             SQLException {
+        checkValidation();
         if (start < 1 || len - (start - 1) < searchString.length()) {
             return -1;
         }
@@ -148,26 +151,38 @@
 
     public OutputStream setAsciiStream(long pos) throws SerialException,
             SQLException {
+        checkValidation();
         if (clob == null) {
             throw new SerialException(Messages.getString("sql.25")); // $NON-NLS-1$
         }
-        return clob.setAsciiStream(pos);
+        OutputStream os = clob.setAsciiStream(pos);
+        if(os == null){
+            throw new SerialException(Messages.getString("sql.46")); // $NON-NLS-1$
+        }
+        return os;
     }
 
     public Writer setCharacterStream(long pos) throws SerialException,
             SQLException {
+        checkValidation();
         if (clob == null) {
             throw new SerialException(Messages.getString("sql.25")); // $NON-NLS-1$
         }
-        return clob.setCharacterStream(pos);
+        Writer writer = clob.setCharacterStream(pos);
+        if(writer == null){
+            throw new SerialException(Messages.getString("sql.45")); // $NON-NLS-1$
+        }
+        return writer;
     }
 
     public int setString(long pos, String str) throws SerialException {
+        checkValidation();
         return setString(pos, str, 0, str.length());
     }
 
     public int setString(long pos, String str, int offset, int length)
             throws SerialException {
+        checkValidation();
         if (pos < 1 || length < 0 || pos > (len - length + 1)) {
             throw new SerialException(Messages.getString("sql.21")); // $NON-NLS-1$
         }
@@ -182,6 +197,7 @@
     }
 
     public void truncate(long length) throws SerialException {
+        checkValidation();
         if(length > len || length < 0) {
             throw new SerialException(Messages.getString("sql.24"));
         }

Modified: harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java?view=diff&rev=548565&r1=548564&r2=548565
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/java/sql/DriverManagerTest.java Mon Jun 18 19:49:51 2007
@@ -584,7 +584,7 @@
      * 
      * Registers a driver for multiple times and deregisters it only once.
      * 
-     * Regression for
+     * Regression for HARMONY-4205
      */
     public void test_registerDriver_MultiTimes() throws SQLException {
         int register_count = 10;

Modified: harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialClobTest.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/SerialClobTest.java?view=diff&rev=548565&r1=548564&r2=548565
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialClobTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SerialClobTest.java Mon Jun 18 19:49:51 2007
@@ -62,22 +62,8 @@
 
         mockClob.characterStreamReader = null;
         mockClob.asciiInputStream = new ByteArrayInputStream(new byte[] { 1 });
-        try {
-            new SerialClob(mockClob);
-            fail("should throw SQLException");
-        } catch (SQLException e) {
-            // expected
-        }
-
         mockClob.characterStreamReader = new CharArrayReader(new char[] { 1 });
         mockClob.asciiInputStream = null;
-        try {
-            new SerialClob(mockClob);
-            fail("should throw SQLException");
-        } catch (SQLException e) {
-            // expected
-        }
-
         mockClob.characterStreamReader = new MockAbnormalReader();
         mockClob.asciiInputStream = new ByteArrayInputStream(new byte[] { 1 });
         try {
@@ -261,9 +247,17 @@
         MockSerialClob mockClob = new MockSerialClob();
         mockClob.characterStreamReader = new CharArrayReader(mockClob.buf);
         mockClob.asciiInputStream = new ByteArrayInputStream(new byte[] { 1 });
-        mockClob.asciiOutputStream = new ByteArrayOutputStream();
         SerialClob serialClob = new SerialClob(mockClob);
-        OutputStream os = serialClob.setAsciiStream(1);
+        OutputStream os = null;
+        try {
+            os = serialClob.setAsciiStream(1);
+            fail("should throw SerialException");
+        } catch (SerialException e) {
+            // expected
+        }
+        mockClob.asciiOutputStream = new ByteArrayOutputStream();
+        os = serialClob.setAsciiStream(1);
+        assertNotNull(os);
         assertTrue(mockClob.isSetAsciiStreamInvoked);
         assertEquals(mockClob.asciiOutputStream, os);