openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: svn commit: r782338 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/strats/ sql/
Date Tue, 16 Jun 2009 17:52:54 GMT
Hi,

Has this change been tested with JDK 5 and JDK 6? I thought the reason  
for the reflection stuff was the incompatibility between JDBC3 and  
JDBC4 so you couldn't write the same code for both platforms.

I might (probably?) have missed the discussion on how to resolve http://issues.apache.org/jira/browse/OPENJPA-5

  which is central to this issue.

Craig

On Jun 7, 2009, at 1:13 AM, mtylenda@apache.org wrote:

> Author: mtylenda
> Date: Sun Jun  7 08:13:41 2009
> New Revision: 782338
>
> URL: http://svn.apache.org/viewvc?rev=782338&view=rev
> Log:
> OPENJPA-1122: Remove JDBC 3 related reflection from DBDictionary
>
> Modified:
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedBlobFieldStrategy.java
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedByteArrayFieldStrategy.java
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedCharArrayFieldStrategy.java
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedClobFieldStrategy.java
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/DBDictionary.java
>    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/OracleDictionary.java
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/meta/strats/MaxEmbeddedBlobFieldStrategy.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedBlobFieldStrategy.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedBlobFieldStrategy.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedBlobFieldStrategy.java Sun Jun  7 08:13:41 2009
> @@ -18,6 +18,7 @@
>  */
> package org.apache.openjpa.jdbc.meta.strats;
>
> +import java.sql.Blob;
> import java.sql.ResultSet;
> import java.sql.SQLException;
>
> @@ -89,7 +90,7 @@
>         DBDictionary dict)
>         throws SQLException {
>         byte[] b = (byte[]) sm.setImplData(field.getIndex(), null);
> -        Object blob = rs.getBlob(1);
> +        Blob blob = rs.getBlob(1);
>         dict.putBytes(blob, b);
>     }
>
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/meta/strats/MaxEmbeddedByteArrayFieldStrategy.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedByteArrayFieldStrategy.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedByteArrayFieldStrategy.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedByteArrayFieldStrategy.java Sun Jun  7  
> 08:13:41 2009
> @@ -19,6 +19,7 @@
> package org.apache.openjpa.jdbc.meta.strats;
>
> import java.lang.reflect.Array;
> +import java.sql.Blob;
> import java.sql.ResultSet;
> import java.sql.SQLException;
>
> @@ -72,7 +73,7 @@
>     protected void putData(OpenJPAStateManager sm, ResultSet rs,
>         DBDictionary dict)
>         throws SQLException {
> -        Object blob = rs.getBlob(1);
> +        Blob blob = rs.getBlob(1);
>         dict.putBytes(blob,  
> PrimitiveWrapperArrays.toByteArray(sm.fetchObject
>             (field.getIndex())));
>     }
> @@ -80,7 +81,7 @@
>     protected Object load(Column col, Result res, Joins joins)
>         throws SQLException {
>         return PrimitiveWrapperArrays.toObjectValue(field,
> -            (byte[]) res.getBytes(col, joins));
> +            res.getBytes(col, joins));
>     }
>
>     public void map(boolean adapt) {
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/meta/strats/MaxEmbeddedCharArrayFieldStrategy.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedCharArrayFieldStrategy.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedCharArrayFieldStrategy.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedCharArrayFieldStrategy.java Sun Jun  7  
> 08:13:41 2009
> @@ -23,6 +23,7 @@
> import java.io.IOException;
> import java.io.Reader;
> import java.lang.reflect.Array;
> +import java.sql.Clob;
> import java.sql.ResultSet;
> import java.sql.SQLException;
>
> @@ -77,7 +78,7 @@
>     protected void putData(OpenJPAStateManager sm, ResultSet rs,
>         DBDictionary dict)
>         throws SQLException {
> -        Object clob = rs.getClob(1);
> +        Clob clob = rs.getClob(1);
>         dict.putChars(clob, PrimitiveWrapperArrays.
>             toCharArray(sm.fetchObject(field.getIndex())));
>     }
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/meta/strats/MaxEmbeddedClobFieldStrategy.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedClobFieldStrategy.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedClobFieldStrategy.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> meta/strats/MaxEmbeddedClobFieldStrategy.java Sun Jun  7 08:13:41 2009
> @@ -18,6 +18,7 @@
>  */
> package org.apache.openjpa.jdbc.meta.strats;
>
> +import java.sql.Clob;
> import java.sql.ResultSet;
> import java.sql.SQLException;
>
> @@ -66,7 +67,7 @@
>     protected void putData(OpenJPAStateManager sm, ResultSet rs,
>         DBDictionary dict)
>         throws SQLException {
> -        Object clob = rs.getClob(1);
> +        Clob clob = rs.getClob(1);
>         dict.putString(clob, sm.fetchString(field.getIndex()));
>     }
>
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/sql/DBDictionary.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/DBDictionary.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/DBDictionary.java Sun Jun  7 08:13:41 2009
> @@ -28,8 +28,6 @@
> import java.io.Reader;
> import java.io.StringReader;
> import java.io.Writer;
> -import java.lang.reflect.InvocationTargetException;
> -import java.lang.reflect.Method;
> import java.math.BigDecimal;
> import java.math.BigInteger;
> import java.sql.Array;
> @@ -394,11 +392,6 @@
>     // first time it happens we can warn the user
>     private Set _precisionWarnedTypes = null;
>
> -    // cache lob methods
> -    private Method _setBytes = null;
> -    private Method _setString = null;
> -    private Method _setCharStream = null;
> -
>     // batchLimit value:
>     // -1 = unlimited
>     // 0  = no batch
> @@ -1421,55 +1414,27 @@
>     /**
>      * Invoke the JDK 1.4 <code>setBytes</code> method on the given  
> BLOB object.
>      */
> -    public void putBytes(Object blob, byte[] data)
> +    public void putBytes(Blob blob, byte[] data)
>         throws SQLException {
> -        if (_setBytes == null) {
> -            try {
> -                _setBytes = blob.getClass().getMethod("setBytes",
> -                    new Class[]{ long.class, byte[].class });
> -            } catch (Exception e) {
> -                throw new StoreException(e);
> -            }
> -        }
> -        invokePutLobMethod(_setBytes, blob,
> -            new Object[]{ Numbers.valueOf(1L), data });
> +        blob.setBytes(1L, data);
>     }
>
>     /**
>      * Invoke the JDK 1.4 <code>setString</code> method on the given  
> CLOB
>      * object.
>      */
> -    public void putString(Object clob, String data)
> +    public void putString(Clob clob, String data)
>         throws SQLException {
> -        if (_setString == null) {
> -            try {
> -                _setString = clob.getClass().getMethod("setString",
> -                    new Class[]{ long.class, String.class });
> -            } catch (Exception e) {
> -                throw new StoreException(e);
> -            }
> -        }
> -        invokePutLobMethod(_setString, clob,
> -            new Object[]{ Numbers.valueOf(1L), data });
> +        clob.setString(1L, data);
>     }
>
>     /**
>      * Invoke the JDK 1.4 <code>setCharacterStream</code> method on  
> the given
>      * CLOB object.
>      */
> -    public void putChars(Object clob, char[] data)
> +    public void putChars(Clob clob, char[] data)
>         throws SQLException {
> -        if (_setCharStream == null) {
> -            try {
> -                _setCharStream = clob.getClass().getMethod
> -                    ("setCharacterStream", new Class[] 
> { long.class });
> -            } catch (Exception e) {
> -                throw new StoreException(e);
> -            }
> -        }
> -
> -        Writer writer = (Writer) invokePutLobMethod(_setCharStream,  
> clob,
> -            new Object[]{ Numbers.valueOf(1L) });
> +        Writer writer = clob.setCharacterStream(1L);
>         try {
>             writer.write(data);
>             writer.flush();
> @@ -1479,24 +1444,6 @@
>     }
>
>     /**
> -     * Invoke the given LOB method on the given target with the  
> given data.
> -     */
> -    private static Object invokePutLobMethod(Method method, Object  
> target,
> -        Object[] args)
> -        throws SQLException {
> -        try {
> -            return method.invoke(target, args);
> -        } catch (InvocationTargetException ite) {
> -            Throwable t = ite.getTargetException();
> -            if (t instanceof SQLException)
> -                throw(SQLException) t;
> -            throw new StoreException(t);
> -        } catch (Exception e) {
> -            throw new StoreException(e);
> -        }
> -    }
> -
> -    /**
>      * Warn that a particular value could not be stored precisely.
>      * After the first warning for a particular type, messages
>      * will be turned into trace messages.
>
> Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/ 
> openjpa/jdbc/sql/OracleDictionary.java
> URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=782338&r1=782337&r2=782338&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/OracleDictionary.java (original)
> +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ 
> sql/OracleDictionary.java Sun Jun  7 08:13:41 2009
> @@ -949,7 +949,7 @@
>      * vendor-specific class; for example Weblogic wraps oracle thin  
> driver
>      * lobs in its own interfaces with the same methods.
>      */
> -    public void putBytes(Object blob, byte[] data)
> +    public void putBytes(Blob blob, byte[] data)
>         throws SQLException {
>         if (blob == null)
>             return;
> @@ -970,7 +970,7 @@
>      * vendor-specific class; for example Weblogic wraps oracle thin  
> driver
>      * lobs in its own interfaces with the same methods.
>      */
> -    public void putString(Object clob, String data)
> +    public void putString(Clob clob, String data)
>         throws SQLException {
>         if (_putString == null) {
>             try {
> @@ -989,7 +989,7 @@
>      * vendor-specific class; for example Weblogic wraps oracle thin  
> driver
>      * lobs in its own interfaces with the same methods.
>      */
> -    public void putChars(Object clob, char[] data)
> +    public void putChars(Clob clob, char[] data)
>         throws SQLException {
>         if (_putChars == null) {
>             try {
>
>

Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message