This is an automated email from the ASF dual-hosted git repository. jeb pushed a commit to branch SLING-7524 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-query.git
The following commit(s) were added to refs/heads/SLING-7524 by this push: new a3e5aa1 SLING-7524 updated doc and post iteration clean up a3e5aa1 is described below commit a3e5aa18bcf31afbf1794b7a6cc8541510a07e53 Author: JE Bailey <j...@apache.org> AuthorDate: Wed Mar 7 08:30:30 2018 -0500 SLING-7524 updated doc and post iteration clean up based on feedback, updated the javadoc as well as removed the reference for the set of seen objects when the iteration is done. --- src/main/java/org/apache/sling/query/AbstractQuery.java | 3 ++- .../org/apache/sling/query/iterator/UniqueIterator.java | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/sling/query/AbstractQuery.java b/src/main/java/org/apache/sling/query/AbstractQuery.java index ea37084..dfbcd51 100644 --- a/src/main/java/org/apache/sling/query/AbstractQuery.java +++ b/src/main/java/org/apache/sling/query/AbstractQuery.java @@ -752,7 +752,8 @@ public abstract class AbstractQuery<T, Q extends AbstractQuery<T, Q>> implements } /** - * Filter out repeated adjacent resources. + * Filter out duplicated resources in a stream, this iterator is stateful during + * the iteration process. * * @return new SlingQuery object transformed by this operation */ diff --git a/src/main/java/org/apache/sling/query/iterator/UniqueIterator.java b/src/main/java/org/apache/sling/query/iterator/UniqueIterator.java index e5ad63f..17b1caf 100644 --- a/src/main/java/org/apache/sling/query/iterator/UniqueIterator.java +++ b/src/main/java/org/apache/sling/query/iterator/UniqueIterator.java @@ -19,16 +19,24 @@ package org.apache.sling.query.iterator; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.apache.sling.query.api.internal.Option; +/** + * Provides an iteration of unique objects. During the iteration process this + * iterator maintains a set of previously seen items that will be used as filter + * to prevent duplicates from being iterated through + * + * @param <T> + */ public class UniqueIterator<T> extends AbstractIterator<Option<T>> { - private final Iterator<Option<T>> iterator; - + private Iterator<Option<T>> iterator; + private Set<T> seen; public UniqueIterator(Iterator<Option<T>> input) { @@ -39,6 +47,8 @@ public class UniqueIterator<T> extends AbstractIterator<Option<T>> { @Override protected Option<T> getElement() { if (!iterator.hasNext()) { + iterator = Collections.emptyIterator(); + seen = null; return null; } Option<T> candidate = iterator.next(); -- To stop receiving notification emails like this one, please contact j...@apache.org.