You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2006/10/04 22:46:25 UTC

svn commit: r453016 - in /incubator/openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/

Author: awhite
Date: Wed Oct  4 13:46:25 2006
New Revision: 453016

URL: http://svn.apache.org/viewvc?view=rev&rev=453016
Log:
Possible fix for OPENJPA-13 JIRA issue.  Also fix possible NPE on delayed close
on transaction completion in managed environment.


Modified:
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java?view=diff&rev=453016&r1=453015&r2=453016
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/HandlerFieldStrategy.java Wed Oct  4 13:46:25 2006
@@ -35,6 +35,7 @@
 import org.apache.openjpa.jdbc.sql.Select;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
 import org.apache.openjpa.lib.util.Localizer;
+import org.apache.openjpa.meta.JavaTypes;
 import org.apache.openjpa.meta.ValueStrategies;
 import org.apache.openjpa.util.InternalException;
 import org.apache.openjpa.util.MetaDataException;
@@ -341,7 +342,7 @@
         Column col, Object autoInc) {
         Object data;
         if (_cols.length == 1)
-            data = autoInc;
+            data = JavaTypes.convert(autoInc, col.getJavaType());
         else {
             // multiple columns; have to get current value, replace this col's
             // value with the given one, and reset
@@ -351,7 +352,8 @@
                 data = new Object[_cols.length];
             for (int i = 0; i < _cols.length; i++) {
                 if (_cols[i] == col) {
-                    ((Object[]) data)[i] = autoInc;
+                    ((Object[]) data)[i] = JavaTypes.convert(autoInc, 
+                        col.getJavaType());
                     break;
                 }
             }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java?view=diff&rev=453016&r1=453015&r2=453016
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java Wed Oct  4 13:46:25 2006
@@ -1794,7 +1794,9 @@
             _flags &= ~FLAG_FLUSHED;
             _flags &= ~FLAG_TRANS_ENDING;
 
-            if (_transEventManager.hasEndListeners()) {
+            // event manager nulled if freed broker
+            if (_transEventManager != null 
+                && _transEventManager.hasEndListeners()) {
                 fireTransactionEvent(new TransactionEvent(this,
                     status == Status.STATUS_COMMITTED
                         ? TransactionEvent.AFTER_COMMIT_COMPLETE
@@ -4021,10 +4023,7 @@
             _extents = null;
         }
 
-        try {
-            releaseConnection();
-        } catch (RuntimeException re) {
-        }
+        try { releaseConnection(); } catch (RuntimeException re) {}
 
         _lm.close();
         _store.close();

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java?view=diff&rev=453016&r1=453015&r2=453016
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java Wed Oct  4 13:46:25 2006
@@ -287,7 +287,7 @@
                 // no break
             case DOUBLE:
                 if (val instanceof String)
-                    new Double(val.toString());
+                    return new Double(val.toString());
                 return val;
             case FLOAT_OBJ:
                 if (val instanceof Float)
@@ -297,7 +297,7 @@
                 // no break
             case FLOAT:
                 if (val instanceof String)
-                    new Float(val.toString());
+                    return new Float(val.toString());
                 return val;
             case INT_OBJ:
                 if (val instanceof Integer)
@@ -307,7 +307,7 @@
                 // no break
             case INT:
                 if (val instanceof String)
-                    new Integer(val.toString());
+                    return new Integer(val.toString());
                 return val;
             case LONG_OBJ:
                 if (val instanceof Long)
@@ -317,7 +317,7 @@
                 // no break
             case LONG:
                 if (val instanceof String)
-                    new Long(val.toString());
+                    return new Long(val.toString());
                 return val;
             case NUMBER:
                 if (val instanceof Number)
@@ -333,7 +333,7 @@
                 // no break
             case SHORT:
                 if (val instanceof String)
-                    new Short(val.toString());
+                    return new Short(val.toString());
                 return val;
             case STRING:
                 return val.toString();