8006139: add missing methods to javax.sql.rowset.serial.SQLInputImpl, SQLOutputImpl
authorlancea
Sat, 19 Jan 2013 10:11:19 -0500
changeset 15277 245068ba31b3
parent 15276 bbddb82e66ce
child 15278 e081d3f73b75
8006139: add missing methods to javax.sql.rowset.serial.SQLInputImpl, SQLOutputImpl Reviewed-by: naoto, ulfzibis, alanb
jdk/src/share/classes/javax/sql/rowset/serial/SQLInputImpl.java
jdk/src/share/classes/javax/sql/rowset/serial/SQLOutputImpl.java
--- a/jdk/src/share/classes/javax/sql/rowset/serial/SQLInputImpl.java	Sat Jan 19 08:39:20 2013 +0000
+++ b/jdk/src/share/classes/javax/sql/rowset/serial/SQLInputImpl.java	Sat Jan 19 10:11:19 2013 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -55,6 +55,7 @@
  * stream to the method <code>SQLData.readSQL</code>, which in turn
  * calls the <code>SQLInputImpl</code> reader methods
  * to read the attributes from the input stream.
+ * @since 1.5
  * @see java.sql.SQLData
  */
 public class SQLInputImpl implements SQLInput {
@@ -142,6 +143,7 @@
             throw new SQLException("SQLInputImpl exception: Invalid read " +
                                    "position");
         } else {
+            lastValueWasNull = attrib[idx] == null;
             return attrib[idx];
         }
     }
@@ -168,16 +170,7 @@
      *     position or if there are no further values in the stream.
      */
     public String readString() throws SQLException {
-
-        String attrib = (String)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return  (String)getNextAttribute();
     }
 
     /**
@@ -195,16 +188,8 @@
      *     position or if there are no further values in the stream.
      */
     public boolean readBoolean() throws SQLException {
-
         Boolean attrib = (Boolean)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return false;
-        } else {
-            lastValueWasNull = false;
-            return attrib.booleanValue();
-        }
+        return  (attrib == null) ? false : attrib.booleanValue();
     }
 
     /**
@@ -223,14 +208,7 @@
      */
     public byte readByte() throws SQLException {
         Byte attrib = (Byte)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return (byte)0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.byteValue();
-        }
+        return  (attrib == null) ? 0 : attrib.byteValue();
     }
 
     /**
@@ -248,14 +226,7 @@
      */
     public short readShort() throws SQLException {
         Short attrib = (Short)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return (short)0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.shortValue();
-        }
+        return (attrib == null) ? 0 : attrib.shortValue();
     }
 
     /**
@@ -273,14 +244,7 @@
      */
     public int readInt() throws SQLException {
         Integer attrib = (Integer)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return 0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.intValue();
-        }
+        return (attrib == null) ? 0 : attrib.intValue();
     }
 
     /**
@@ -298,14 +262,7 @@
      */
     public long readLong() throws SQLException {
         Long attrib = (Long)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return (long)0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.longValue();
-        }
+        return (attrib == null) ? 0 : attrib.longValue();
     }
 
     /**
@@ -323,14 +280,7 @@
      */
     public float readFloat() throws SQLException {
         Float attrib = (Float)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return (float)0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.floatValue();
-        }
+        return (attrib == null) ? 0 : attrib.floatValue();
     }
 
     /**
@@ -348,14 +298,7 @@
      */
     public double readDouble() throws SQLException {
         Double attrib = (Double)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return (double)0;
-        } else {
-            lastValueWasNull = false;
-            return attrib.doubleValue();
-        }
+        return (attrib == null)  ? 0 :  attrib.doubleValue();
     }
 
     /**
@@ -372,15 +315,7 @@
      *       position or if there are no more values in the stream
      */
     public java.math.BigDecimal readBigDecimal() throws SQLException {
-        java.math.BigDecimal attrib = (java.math.BigDecimal)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.math.BigDecimal)getNextAttribute();
     }
 
     /**
@@ -397,15 +332,7 @@
      *       position or if there are no more values in the stream
      */
     public byte[] readBytes() throws SQLException {
-        byte[] attrib = (byte[])getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (byte[])getNextAttribute();
     }
 
     /**
@@ -422,15 +349,7 @@
      *       position or if there are no more values in the stream
      */
     public java.sql.Date readDate() throws SQLException {
-        java.sql.Date attrib = (java.sql.Date)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.sql.Date)getNextAttribute();
     }
 
     /**
@@ -448,15 +367,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.sql.Time readTime() throws SQLException {
-        java.sql.Time attrib = (java.sql.Time)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.sql.Time)getNextAttribute();
     }
 
     /**
@@ -469,15 +380,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.sql.Timestamp readTimestamp() throws SQLException {
-        java.sql.Timestamp attrib = (java.sql.Timestamp)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.sql.Timestamp)getNextAttribute();
     }
 
     /**
@@ -494,15 +397,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.io.Reader readCharacterStream() throws SQLException {
-        java.io.Reader attrib = (java.io.Reader)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.io.Reader)getNextAttribute();
     }
 
     /**
@@ -520,15 +415,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.io.InputStream readAsciiStream() throws SQLException {
-        java.io.InputStream attrib = (java.io.InputStream)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.io.InputStream)getNextAttribute();
     }
 
     /**
@@ -546,15 +433,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.io.InputStream readBinaryStream() throws SQLException {
-        java.io.InputStream attrib = (java.io.InputStream)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (java.io.InputStream)getNextAttribute();
     }
 
     //================================================================
@@ -589,39 +468,32 @@
      */
     public Object readObject() throws SQLException {
         Object attrib = getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            if (attrib instanceof Struct) {
-                Struct s = (Struct)attrib;
-                // look up the class in the map
-                Class<?> c = map.get(s.getSQLTypeName());
-                if (c != null) {
-                    // create new instance of the class
-                    SQLData obj = null;
-                    try {
-                        obj = (SQLData)c.newInstance();
-                    } catch (java.lang.InstantiationException ex) {
-                        throw new SQLException("Unable to instantiate: " +
-                                               ex.getMessage());
-                    } catch (java.lang.IllegalAccessException ex) {
-                        throw new SQLException("Unable to instantiate: " +
-                                               ex.getMessage());
-                    }
-                    // get the attributes from the struct
-                    Object attribs[] = s.getAttributes(map);
-                    // create the SQLInput "stream"
-                    SQLInputImpl sqlInput = new SQLInputImpl(attribs, map);
-                    // read the values...
-                    obj.readSQL(sqlInput, s.getSQLTypeName());
-                    return obj;
+        if (attrib instanceof Struct) {
+            Struct s = (Struct)attrib;
+            // look up the class in the map
+            Class<?> c = map.get(s.getSQLTypeName());
+            if (c != null) {
+                // create new instance of the class
+                SQLData obj = null;
+                try {
+                    obj = (SQLData)c.newInstance();
+                } catch (java.lang.InstantiationException ex) {
+                    throw new SQLException("Unable to instantiate: " +
+                            ex.getMessage());
+                } catch (java.lang.IllegalAccessException ex) {
+                    throw new SQLException("Unable to instantiate: " +
+                            ex.getMessage());
                 }
+                // get the attributes from the struct
+                Object attribs[] = s.getAttributes(map);
+                // create the SQLInput "stream"
+                SQLInputImpl sqlInput = new SQLInputImpl(attribs, map);
+                // read the values...
+                obj.readSQL(sqlInput, s.getSQLTypeName());
+                return obj;
             }
-            return attrib;
         }
+        return attrib;
     }
 
     /**
@@ -635,15 +507,7 @@
      *         position; or if there are no further values in the stream.
      */
     public Ref readRef() throws SQLException {
-        Ref attrib = (Ref)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (Ref)getNextAttribute();
     }
 
     /**
@@ -664,15 +528,7 @@
      * position; or if there are no further values in the stream.
      */
     public Blob readBlob() throws SQLException {
-        Blob attrib = (Blob)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (Blob)getNextAttribute();
     }
 
     /**
@@ -693,15 +549,7 @@
      * position; or if there are no further values in the stream.
      */
     public Clob readClob() throws SQLException {
-
-        Clob attrib = (Clob)getNextAttribute();
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (Clob)getNextAttribute();
     }
 
     /**
@@ -723,15 +571,7 @@
 
      */
     public Array readArray() throws SQLException {
-        Array attrib = (Array)getNextAttribute();
-
-        if (attrib == null) {
-            lastValueWasNull = true;
-            return null;
-        } else {
-            lastValueWasNull = false;
-            return attrib;
-        }
+        return (Array)getNextAttribute();
     }
 
     /**
@@ -766,7 +606,7 @@
      * position; or if there are no further values in the stream.
      */
     public java.net.URL readURL() throws SQLException {
-        throw new SQLException("Operation not supported");
+        return (java.net.URL)getNextAttribute();
     }
 
     //---------------------------- JDBC 4.0 -------------------------
@@ -779,10 +619,11 @@
      * at the head of the stream; <code>null</code> if the value read is
      * SQL <code>NULL</code>
      * @exception SQLException if a database access error occurs
+     * @since 1.6
      */
      public NClob readNClob() throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
-    }
+        return (NClob)getNextAttribute();
+     }
 
     /**
      * Reads the next attribute in the stream and returns it as a <code>String</code>
@@ -792,9 +633,10 @@
      *
      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
      * @exception SQLException if a database access error occurs
+     * @since 1.6
      */
     public String readNString() throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
+        return (String)getNextAttribute();
     }
 
     /**
@@ -805,12 +647,13 @@
      * at the head of the stream; <code>null</code> if the value read is
      * SQL <code>NULL</code>
      * @exception SQLException if a database access error occurs
+     * @since 1.6
      */
     public SQLXML readSQLXML() throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
+        return (SQLXML)getNextAttribute();
     }
 
-     /**
+    /**
      * Reads an SQL <code>ROWID</code> value from the stream and returns it as a
      * <code>RowId</code> object in the Java programming language.
      *
@@ -818,9 +661,10 @@
      * at the head of the stream; <code>null</code> if the value read is
      * SQL <code>NULL</code>
      * @exception SQLException if a database access error occurs
+     * @since 1.6
      */
     public RowId readRowId() throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
+        return  (RowId)getNextAttribute();
     }
 
 
--- a/jdk/src/share/classes/javax/sql/rowset/serial/SQLOutputImpl.java	Sat Jan 19 08:39:20 2013 +0000
+++ b/jdk/src/share/classes/javax/sql/rowset/serial/SQLOutputImpl.java	Sat Jan 19 10:11:19 2013 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -579,7 +579,7 @@
     }
 
 
-    /**
+  /**
    * Writes the next attribute to the stream as a <code>String</code>
    * in the Java programming language. The driver converts this to a
    * SQL <code>NCHAR</code> or
@@ -594,8 +594,8 @@
    */
    @SuppressWarnings("unchecked")
    public void writeNString(String x) throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
-    }
+       attribs.add(x);
+   }
 
   /**
    * Writes an SQL <code>NCLOB</code> value to the stream.
@@ -608,8 +608,8 @@
    */
    @SuppressWarnings("unchecked")
    public void writeNClob(NClob x) throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
-    }
+           attribs.add(x);
+   }
 
 
   /**
@@ -623,8 +623,8 @@
    */
    @SuppressWarnings("unchecked")
    public void writeRowId(RowId x) throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
-    }
+        attribs.add(x);
+   }
 
 
   /**
@@ -638,7 +638,7 @@
    */
    @SuppressWarnings("unchecked")
    public void writeSQLXML(SQLXML x) throws SQLException {
-        throw new UnsupportedOperationException("Operation not supported");
+        attribs.add(x);
     }
 
 }