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 and
IBM SDK 5&6 with Derby every night. These builds are passing now.

-mike

On 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 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, [email protected] 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:[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!

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to