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/05/11 22:35:01 UTC
svn commit: r537283 - 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 May 11 13:35:01 2007
New Revision: 537283
URL: http://svn.apache.org/viewvc?view=rev&rev=537283
Log:
Apply patch HARMONY-3826 ([classlib][sql] SQLInputImpl throws NullPointerException when the param of readXXX is null)
Modified:
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SQLInputImpl.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/SQLInputImplTest.java
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SQLInputImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SQLInputImpl.java?view=diff&rev=537283&r1=537282&r2=537283
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SQLInputImpl.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/serial/SQLInputImpl.java Fri May 11 13:35:01 2007
@@ -77,12 +77,9 @@
*/
public Array readArray() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- }
- Object o = attributes[readPosition++];
- if(o == null) {
- return null;
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
+ Object o = attributes[readPosition++];
return (Array) o;
}
@@ -93,12 +90,9 @@
*/
public InputStream readAsciiStream() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (InputStream) o;
}
@@ -109,12 +103,9 @@
*/
public BigDecimal readBigDecimal() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (BigDecimal) o;
}
@@ -125,12 +116,9 @@
*/
public InputStream readBinaryStream() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (InputStream) o;
}
@@ -141,12 +129,9 @@
*/
public Blob readBlob() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (Blob) o;
}
@@ -157,10 +142,10 @@
*/
public boolean readBoolean() throws SQLException, NotImplementedException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Boolean) o;
+ return o == null ? false : ((Boolean) o).booleanValue();
}
/**
@@ -170,10 +155,10 @@
*/
public byte readByte() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
- Object o = attributes[readPosition++];
- return (Byte) o;
+ Object o = attributes[readPosition++];
+ return o == null ? (byte) 0 : ((Byte) o).byteValue();
}
/**
@@ -183,12 +168,9 @@
*/
public byte[] readBytes() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- }
- Object o = attributes[readPosition++];
- if(o == null) {
- return null;
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
+ Object o = attributes[readPosition++];
return (byte[]) o;
}
@@ -199,28 +181,22 @@
*/
public Reader readCharacterStream() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (Reader) o;
}
- /**
+ /**
* {@inheritDoc}
*
* @see java.sql.SQLInput#readClob()
*/
public Clob readClob() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- }
- Object o = attributes[readPosition++];
- if(o == null) {
- return null;
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
+ Object o = attributes[readPosition++];
return (Clob) o;
}
@@ -231,12 +207,9 @@
*/
public Date readDate() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (Date) o;
}
@@ -247,10 +220,10 @@
*/
public double readDouble() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Double) o;
+ return o == null ? 0 : ((Double) o).doubleValue();
}
/**
@@ -260,10 +233,10 @@
*/
public float readFloat() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Float) o;
+ return o == null ? 0f : ((Float) o).floatValue();
}
/**
@@ -273,10 +246,10 @@
*/
public int readInt() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Integer) o;
+ return o == null ? 0 : ((Integer) o).intValue();
}
/**
@@ -286,10 +259,10 @@
*/
public long readLong() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Long) o;
+ return o == null ? 0 : ((Long) o).longValue();
}
/**
@@ -299,13 +272,13 @@
*/
public Object readObject() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
if (o instanceof Struct) {
Struct structuredType = (Struct)o;
String typeName = structuredType.getSQLTypeName();
- Class c = map.get(typeName);
+ Class<?> c = map.get(typeName);
if(c != null) {
try {
SQLData data = (SQLData)c.newInstance();
@@ -330,12 +303,9 @@
*/
public Ref readRef() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- }
- Object o = attributes[readPosition++];
- if(o == null) {
- return null;
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
+ Object o = attributes[readPosition++];
return (Ref) o;
}
@@ -346,10 +316,10 @@
*/
public short readShort() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- return (Short) o;
+ return o == null ? (short) 0 : ((Short) o).shortValue();
}
/**
@@ -359,12 +329,9 @@
*/
public String readString() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- }
- Object o = attributes[readPosition++];
- if(o == null) {
- return null;
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
+ Object o = attributes[readPosition++];
return (String) o;
}
@@ -375,12 +342,9 @@
*/
public Time readTime() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (Time) o;
}
@@ -391,12 +355,9 @@
*/
public Timestamp readTimestamp() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
Object o = attributes[readPosition++];
- if(o == null) {
- return null;
- }
return (Timestamp) o;
}
@@ -407,10 +368,9 @@
*/
public URL readURL() throws SQLException {
if(readPosition >= attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
- } else {
- throw new SQLException(Messages.getString("sql.37"));
- }
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
+ }
+ throw new SQLException(Messages.getString("sql.37")); //$NON-NLS-1$
}
/**
@@ -419,10 +379,10 @@
* @see java.sql.SQLInput#wasNull()
*/
public boolean wasNull() throws SQLException, NotImplementedException {
- if(readPosition > attributes.length) {
- throw new SQLException(Messages.getString("sql.35"));
+ if (readPosition > attributes.length) {
+ throw new SQLException(Messages.getString("sql.35")); //$NON-NLS-1$
}
- return attributes[readPosition - 1] == null;
+ return readPosition == 0 ? false : attributes[readPosition - 1] == null;
}
}
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=537283&r1=537282&r2=537283
==============================================================================
--- 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 May 11 13:35:01 2007
@@ -46,4 +46,8 @@
sql.29=Invalid nullable constant set. Must be either columnNoNulls, columnNullable or columnNullableUnknown
sql.30=Invalid column display size. Cannot be less than zero
sql.31=Invalid precision value. Cannot be less than zero
-sql.32=Invalid scale size. Cannot be less than zero
\ No newline at end of file
+sql.32=Invalid scale size. Cannot be less than zero
+sql.33=Cannot instantiate a SQLOutputImpl instance with null parameters
+sql.34=Cannot instantiate a SQLInputImpl instance with null parameters
+sql.35=SQLInputImpl exception: Invalid read position
+sql.37=Operation not supported
\ 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/SQLInputImplTest.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/SQLInputImplTest.java?view=diff&rev=537283&r1=537282&r2=537283
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SQLInputImplTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/serial/SQLInputImplTest.java Fri May 11 13:35:01 2007
@@ -40,6 +40,7 @@
import java.util.Map;
import javax.sql.rowset.serial.SQLInputImpl;
+import javax.sql.rowset.serial.SerialDatalink;
import junit.framework.TestCase;
@@ -91,9 +92,13 @@
try {
impl.readArray();
fail("should throw SQLException");
- } catch (SQLException e) {
+ } catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readArray());
}
/**
@@ -111,6 +116,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readAsciiStream());
}
/**
@@ -128,6 +137,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readBigDecimal());
}
/**
@@ -138,6 +151,10 @@
Object[] attributes = new Object[] {stream};
SQLInputImpl impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
assertEquals(stream, impl.readBinaryStream());
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readBinaryStream());
}
/**
@@ -155,6 +172,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readBlob());
}
/**
@@ -171,6 +192,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertFalse(impl.readBoolean());
}
/**
@@ -187,6 +212,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals((byte)0, impl.readByte());
}
/**
@@ -204,6 +233,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readBytes());
}
/**
@@ -221,6 +254,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readCharacterStream());
}
/**
@@ -238,6 +275,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readClob());
}
/**
@@ -255,6 +296,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readDate());
}
/**
@@ -271,6 +316,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals(0, impl.readDouble(), 0);
}
/**
@@ -287,6 +336,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals(0f, impl.readFloat(), 0);
}
/**
@@ -303,6 +356,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals(0, impl.readInt());
}
/**
@@ -319,6 +376,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals(0, impl.readLong());
}
/**
@@ -362,6 +423,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readRef());
}
/**
@@ -378,6 +443,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertEquals((short)0, impl.readShort());
}
/**
@@ -394,6 +463,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readString());
}
/**
@@ -411,6 +484,10 @@
} catch (SQLException e) {
// expected
}
+
+ attributes = new Object[] {null};
+ impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertNull(impl.readTime());
}
/**
@@ -435,7 +512,8 @@
*/
public void testReadURL() throws SQLException, MalformedURLException {
URL url = new URL("http://www.apache.org");
- Object[] attributes = new Object[] {url};
+ SerialDatalink link = new SerialDatalink(url);
+ Object[] attributes = new Object[] {link};
SQLInputImpl impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
try {
impl.readURL();
@@ -458,6 +536,7 @@
public void testWasNull() throws SQLException {
Object[] attributes = new Object[] {null, "hello"};
SQLInputImpl impl = new SQLInputImpl(attributes, new HashMap<String, Class<?>>());
+ assertFalse(impl.wasNull());
assertEquals(null, impl.readString());
assertTrue(impl.wasNull());
assertEquals("hello", impl.readString());
@@ -468,6 +547,7 @@
} catch (SQLException e) {
// expected
}
+ assertFalse(impl.wasNull());
assertFalse(impl.wasNull());
}