From dev-return-12452-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Tue Jun 16 18:04:57 2009 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 93009 invoked from network); 16 Jun 2009 18:04:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 16 Jun 2009 18:04:57 -0000 Received: (qmail 27241 invoked by uid 500); 16 Jun 2009 18:05:09 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 27215 invoked by uid 500); 16 Jun 2009 18:05:08 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 27205 invoked by uid 99); 16 Jun 2009 18:05:08 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Jun 2009 18:05:08 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of michael.d.dick@gmail.com designates 209.85.218.219 as permitted sender) Received: from [209.85.218.219] (HELO mail-bw0-f219.google.com) (209.85.218.219) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Jun 2009 18:04:58 +0000 Received: by bwz19 with SMTP id 19so4701368bwz.9 for ; Tue, 16 Jun 2009 11:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=Nwc9qofcz8HK08V05nmKWp2xtVaJg8OJFSrAWE2n6Pc=; b=bdDL7OLAllNtxYqbkucPLoti9Pq9/4M0sJMPy2qHRYNCegjEKXLOHSdtK7w75ZS3B2 +WOt+XZx383uGFlLekgj6Ro5D9nn/ttjMwqwSBbKj8Fvrjxt3IGZl24Yy4UHquq+Cm5l tPlCiFX8Y7i/vGKu4GYOD7/uQWNJQ8hzMxxJU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=QV+cp5kzmxvnBtXt2qgjG7kJ0325tQz97yqfk7L7AZyGDzv42dzb1cqRvy8BQJRWVi lpqAvrvIgxGN4+Ca57wTLTNA5N05Mip0N6GXfhfJuvSQZ/e1FQ53D0guuA1UTayxJYw1 Hm5lxK6JfOasBoJggPznVgm2DDrqsyh4wtP9I= MIME-Version: 1.0 Received: by 10.223.120.197 with SMTP id e5mr5690549far.25.1245175477851; Tue, 16 Jun 2009 11:04:37 -0700 (PDT) In-Reply-To: <5AEFCE49-14C3-48EF-8BE7-9DE49C141A41@SUN.com> References: <20090607081342.66C6223888D3@eris.apache.org> <5AEFCE49-14C3-48EF-8BE7-9DE49C141A41@SUN.com> Date: Tue, 16 Jun 2009 13:04:37 -0500 Message-ID: <72c1350f0906161104h145882fbp200d75a762af1d74@mail.gmail.com> Subject: Re: svn commit: r782338 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/strats/ sql/ From: Michael Dick To: dev@openjpa.apache.org Content-Type: multipart/alternative; boundary=001636c5b7120a566c046c7b028a X-Virus-Checked: Checked by ClamAV on apache.org --001636c5b7120a566c046c7b028a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 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, 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 setBytes 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 setString 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 setCharacterStream 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! > > --001636c5b7120a566c046c7b028a--