mirror of https://github.com/apache/openjpa.git
Possible fix for OPENJPA-13 JIRA issue. Also fix possible NPE on delayed close
on transaction completion in managed environment. git-svn-id: https://svn.apache.org/repos/asf/incubator/openjpa/trunk@453016 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8785be46e7
commit
5337ce10d0
|
@ -35,6 +35,7 @@ import org.apache.openjpa.jdbc.sql.SQLBuffer;
|
|||
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 @@ public class HandlerFieldStrategy
|
|||
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 @@ public class HandlerFieldStrategy
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1794,7 +1794,9 @@ public class BrokerImpl
|
|||
_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 @@ public class BrokerImpl
|
|||
_extents = null;
|
||||
}
|
||||
|
||||
try {
|
||||
releaseConnection();
|
||||
} catch (RuntimeException re) {
|
||||
}
|
||||
try { releaseConnection(); } catch (RuntimeException re) {}
|
||||
|
||||
_lm.close();
|
||||
_store.close();
|
||||
|
|
|
@ -287,7 +287,7 @@ public class JavaTypes {
|
|||
// 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 @@ public class JavaTypes {
|
|||
// 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 @@ public class JavaTypes {
|
|||
// 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 @@ public class JavaTypes {
|
|||
// 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 @@ public class JavaTypes {
|
|||
// no break
|
||||
case SHORT:
|
||||
if (val instanceof String)
|
||||
new Short(val.toString());
|
||||
return new Short(val.toString());
|
||||
return val;
|
||||
case STRING:
|
||||
return val.toString();
|
||||
|
|
Loading…
Reference in New Issue