jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Campbell Allan <ca...@grahamtechnology.com>
Subject Re: Problem removing nodes
Date Mon, 10 Oct 2005 10:26:28 GMT
On Sunday 09 October 2005 11:27, Stefan Guggisberg wrote:
> hi martin
>
> On 10/9/05, Martin Perez <mpermar@gmail.com> wrote:
> > Hi.
> >
> > I'm having problems when removing a node. This is my source code (very
> > simple):
> >
> > javax.jcr.Node directory = session.getNodeByUUID(directoryId);
> > directory.remove();
> > session.save();
> >
> > But strangely this throws an exception:
> >
> > java.lang.UnsupportedOperationException: IteratorChains must contain at
> > least one Iterator
> > at
> > org.apache.commons.collections.iterators.IteratorChain.checkChainIntegrit
> >y(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.jackrabbit.core.ItemImpl.getTransientStates(ItemImpl.java:376)
> > at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1215)
> > at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:765)
> > at org.jlibrary.core.jcr.JCRRepositoryService.removeDirectory(
> > JCRRepositoryService.java:127)
> > at
> > org.jlibrary.client.ui.repository.actions.DeleteAction.deleteDirectory(
> > DeleteAction.java:275)
> > at org.jlibrary.client.ui.repository.actions.DeleteAction.deleteItem(
> > DeleteAction.java:350)
> > at org.jlibrary.client.ui.repository.actions.DeleteAction.access$1(
> > DeleteAction.java:343)
> > at org.jlibrary.client.ui.repository.actions.DeleteAction$1.run(
> > DeleteAction.java:158)
> > at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)
> >
> > Am I doing something wrong?
>
> don't think so, looks like a bug to me;) i'll have a look at it tomorrow.
>
> thanks
> stefan
>
> > Regards,
> >
> > Martin

This occurs when commons-collections-2.1 is on the classpath before 3.1. The 
implementation of IteratorChain in 2.1 throws an exception if there are no 
members to iterate over when hasNext() or next() are called. IMO this is 
plain wrong as it changes the definition of Iterator which is the interface 
anyone is likely to use the class with. I think this is why it changed in 
3.1. My current fix was to write a simple wrapper class that caught the 
exception and made the iterator act as I would expect.

Campbell

________________________________________________________________________________
This email (and any attachments) is private and confidential, and is intended
solely for the addressee. If you have received this communication in error
please remove it and inform us via telephone or email.

Although we take all possible steps to ensure mail and attachments are free
from malicious content, malware and viruses, we cannot accept any responsibility
whatsoever for any changes to content outwith our administrative bounds.

The views represented within this mail are solely the view of the
author and do not reflect the views of the organisation as a whole.
________________________________________________________________________________

Graham Technology plc                                   http:// www.grahamtechnology.com
________________________________________________________________________________

Mime
View raw message