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 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.checkChainInte grity(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.checkChainInte grity(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.
>
>


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!

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to