NullPointerException occurred in BrokerImpl.java
------------------------------------------------
Key: OPENJPA-261
URL: https://issues.apache.org/jira/browse/OPENJPA-261
Project: OpenJPA
Issue Type: Bug
Components: kernel
Affects Versions: 0.9.7
Environment: Window XP
Reporter: Teresa Kan
Priority: Critical
While I was testing against the openjpa code, I got a NPE in the
BrokerImpl.endtransaction() method. The method set the transState to an empty
Collection if there is no cache for transactions. Later the code did not check
this Collection and tried to iterate on it and a NullPointerException occurred.
Original code:
Collection transStates = _transCache;
if (transStates == null)
transStates = Collections.EMPTY_LIST;
.....
for (Iterator itr = transStates.iterator(); itr.hasNext();) { <--- NPE
occurred here.
sm = (StateManagerImpl) itr.next();
try {
if (rollback) {
// tell objects that may have been derefed then flushed
// (and therefore deleted) to un-deref
sm.setDereferencedDependent(false, false);
sm.rollback();
} else
sm.commit();
} catch (RuntimeException re) {
exceps = add(exceps, re);
}
}
I put a check before this "for" loop then the NPE disappeared.
if (!transStates.isEmpty()) {
for (Iterator itr = transStates.iterator(); itr.hasNext();) {
sm = (StateManagerImpl) itr.next();
try {
if (rollback) {
// tell objects that may have been derefed then flushed
// (and therefore deleted) to un-deref
sm.setDereferencedDependent(false, false);
sm.rollback();
} else
sm.commit();
} catch (RuntimeException re) {
exceps = add(exceps, re);
}
}
}
The NPE.patch is attached in this jiar.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.