Sorry, it was not a NPE, but it was the *
java.lang.UnsupportedOperationException.* Somehow I wrote down the
old exception. I changed the subject with the right exception. This
exception only occurred in an inheritance strategy of TABLE_PER_CLASS.

The Collecitons.EMPTY_LIST.iterator() returns
[EMAIL PROTECTED]

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

Teresa

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.


Reply via email to