Hi Teresa,I've edited the JIRA but you should look and see if it makes sense with the minimum editing I did.
Craig On Jun 19, 2007, at 4:08 PM, Teresa Kan wrote:
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 NPEbefore and somehow mixed up with two. Anyway, it caused by :java.lang.UnsupportedOperationException: IteratorChains must contain atleast 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 whileending 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 whileending 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 Iteratorat 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 mustcontain at least one Iterator atorg.apache.commons.collections.iterators.IteratorChain.checkChainInte grity(UnknownSource)at org.apache.commons.collections.iterators.IteratorChain.lockChain (UnknownSource)at org.apache.commons.collections.iterators.IteratorChain.hasNext (UnknownSource)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 mustcontain at least one Iteratorat 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 moreCaused by: java.lang.UnsupportedOperationException: IteratorChains mustcontain at least one Iterator atorg.apache.commons.collections.iterators.IteratorChain.checkChainInte grity(UnknownSource)at org.apache.commons.collections.iterators.IteratorChain.lockChain (UnknownSource)at org.apache.commons.collections.iterators.IteratorChain.hasNext (UnknownSource)update different fieldsat 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. > >
Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature
