Is there a way to change the JIAR subject to UnsupportedOperationException?
On 6/19/07, Teresa Kan <[EMAIL PROTECTED]> wrote:
Sorry it was not NPE, it was UnsupportedOperationException. I had the NPE before and somehow mixed up with two. Anyway, it caused by : java.lang.UnsupportedOperationException: IteratorChains must contain at least one Iterator The Collecitons.EMPTY_LIST.iterator() does not return null. Here is the exception stack: 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while ending the transaction. This exception will be re-thrown. <0.0.0 nonfatal user error> org.apache.openjpa.util.NoTransactionException: Can only perform operation while a transaction is active. at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction( BrokerImpl.java:4307) at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java :1806) at org.apache.openjpa.kernel.LocalManagedRuntime.rollback( LocalManagedRuntime.java:123) at org.apache.openjpa.kernel.LocalManagedRuntime.commit( LocalManagedRuntime.java:104) at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319) at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java :869) at org.apache.openjpa.persistence.EntityManagerImpl.commit( EntityManagerImpl.java:409) at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135) 4781 emptest TRACE [main] openjpa.Runtime - An exception occurred while ending the transaction. This exception will be re-thrown. <0.0.0 nonfatal store error> org.apache.openjpa.util.StoreException: IteratorChains must contain at least one Iterator at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java :1833) at org.apache.openjpa.kernel.LocalManagedRuntime.commit( LocalManagedRuntime.java:93) at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319) at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java :869) at org.apache.openjpa.persistence.EntityManagerImpl.commit( EntityManagerImpl.java:409) at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135) Caused by: java.lang.UnsupportedOperationException: IteratorChains must contain at least one Iterator at org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown Source) at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown Source) at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown Source) at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java :2196) at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java :1809) ... 5 more <0.0.0 fatal store error> org.apache.openjpa.persistence.RollbackException: IteratorChains must contain at least one Iterator at org.apache.openjpa.persistence.EntityManagerImpl.commit( EntityManagerImpl.java:420) at tutorial.ejb.TestEmpsPerClass.main(TestEmpsPerClass.java:135) Caused by: <0.0.0 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: IteratorChains must contain at least one Iterator at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java :1833) at org.apache.openjpa.kernel.LocalManagedRuntime.commit( LocalManagedRuntime.java:93) at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1319) at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java :869) at org.apache.openjpa.persistence.EntityManagerImpl.commit( EntityManagerImpl.java:409) ... 1 more Caused by: java.lang.UnsupportedOperationException: IteratorChains must contain at least one Iterator at org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrity(Unknown Source) at org.apache.commons.collections.iterators.IteratorChain.lockChain(Unknown Source) at org.apache.commons.collections.iterators.IteratorChain.hasNext(Unknown Source)update different fields at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java :2196) at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java :1809) ... 5 more On 6/19/07, Patrick Linskey (JIRA) <[EMAIL PROTECTED]> wrote: > > > [ > https://issues.apache.org/jira/browse/OPENJPA-261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506312] > > Patrick Linskey commented on OPENJPA-261: > ----------------------------------------- > > So you're saying that Collections.EMPTY_LIST.iterator() is returning > null? That seems surprising. What version of Java are you using? Can you > check if your Java version is returning null from > Collecitons.EMPTY_LIST.iterator ()? > > > 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 > > Attachments: NPE.patch > > > > > > 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. > >
