[ https://issues.apache.org/jira/browse/JCR-3555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13620735#comment-13620735 ]
Jukka Zitting edited comment on JCR-3555 at 4/3/13 8:42 AM: ------------------------------------------------------------ Perhaps something like this: public class OneShotIterable<T> implements Iterable<T> { private boolean first = true; private final Iterator<T> iterator; public OneShotIterable(Iterator<T> iterator) { this.iterator = iterator; } @Override public synchronized Iterator<T> iterator() { if (first) { first = false; return iterator; } else { throw new IllegalStateException( "Unable to iterate more than once over a single iterator"); } } } was (Author: jukkaz): Perhaps something like this: public class OneShotIterable<T> implements Iterable<T> { private final boolean first = true; private final Iterator<T> iterator; public OneShotIterable(Iterator<T> iterator) { this.iterator = iterator; } @Override public synchronized Iterator<T> iterator() { if (first) { first = false; return iterator; } else { throw new IllegalStateException( "Unable to iterate more than once over a single iterator"); } } } > Add a static utility to transform JCR Iterators into Iterables > -------------------------------------------------------------- > > Key: JCR-3555 > URL: https://issues.apache.org/jira/browse/JCR-3555 > Project: Jackrabbit Content Repository > Issue Type: Improvement > Components: jackrabbit-jcr-commons > Affects Versions: 2.6 > Reporter: Lukas Eder > Priority: Minor > Attachments: Iterators.java.patch > > > I have stumbled upon the utility classes in the > org.apache.jackrabbit.commons.iterator package. They're quite useful in > principle, but not applied thoroughly. E.g. there are missing wrapper types > for at least these JCR Iterators: > - AccessControlPolicyIterator > - EventIterator > - EventListenerIterator > - NodeTypeIterator > - VersionIterator > Instead of adding more classes, it might be useful to create static methods > for the job. Using static methods from a single class (with static imports) > is a bit more convenient than looking up and creating the wrapper types using > "new WrapperType(...)" > An example: > org.apache.jackrabbit.commons.iterator.Iterators.iterable > // And then: > for (Node n : iterable(parent.getNodes())) { > // Do stuff with n > } > Please find attached a .patch file containing an implementation suggestion. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira