openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.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 23:33:52 GMT
Hi Craig,

Thanks for the explanation. The tests always build from scratch, currently.
I could certainly add tests that build with one and run with the other (or
both) though.

-mike

On Tue, Jun 16, 2009 at 1:16 PM, Craig L Russell <Craig.Russell@sun.com>wrote:

> 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 <Craig.Russell@sun.com
>> >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 <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!
>>>
>>>
>>>
> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message