Hi Mike,The code will work if you build from source and run on the same platform you compiled on.
But a binary distribution won't work (IIRC) if you run on a different platform than what the distribution was built with.
Do your tests compile on 6 and run on both 5 and 6? Thanks, Craig On Jun 16, 2009, at 11:04 AM, Michael Dick wrote:
I don't have a Java 6 configuration for MySQL, but I do run Sun JDK 5&6 andIBM SDK 5&6 with Derby every night. These builds are passing now. -mikeOn Tue, Jun 16, 2009 at 12:52 PM, Craig L Russell <[email protected] >wrote: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 youcouldn't write the same code for both platforms. I might (probably?) have missed the discussion on how to resolvehttp://issues.apache.org/jira/browse/OPENJPA-5 which is central to thisissue. Craig On Jun 7, 2009, at 1:13 AM, [email protected] wrote: Author: mtylendaDate: 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.javaopenjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ meta/strats/MaxEmbeddedByteArrayFieldStrategy.javaopenjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ meta/strats/MaxEmbeddedCharArrayFieldStrategy.javaopenjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ meta/strats/MaxEmbeddedClobFieldStrategy.javaopenjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ sql/DBDictionary.javaopenjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ sql/OracleDictionary.javaModified:openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ meta/strats/MaxEmbeddedBlobFieldStrategy.javaURL: 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.javaSun 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.javaURL: 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.javaSun 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.javaURL: 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.javaSun 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.javaURL: 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.javaSun 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.javaURL: 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.javaSun 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 BLOBobject. */ - 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 thegiven * 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 givendata. - */ - 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.javaURL: 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.javaSun 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:[email protected] P.S. A good JDO? O, Gasp!
Craig L Russell Architect, Sun Java Enterprise System http://db.apache.org/jdo 408 276-5638 mailto:[email protected] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature
