public class NodeDirectoryStream implements DirectoryStream<Path> {
private final JcrFileSystem fs;
private final NodeIterator nodeIterator;
+ private final Iterator<JcrPath> additionalPaths;
private final Filter<? super Path> filter;
- public NodeDirectoryStream(JcrFileSystem fs, NodeIterator nodeIterator, Filter<? super Path> filter) {
+ public NodeDirectoryStream(JcrFileSystem fs, NodeIterator nodeIterator, Iterator<JcrPath> additionalPaths,
+ Filter<? super Path> filter) {
this.fs = fs;
this.nodeIterator = nodeIterator;
+ this.additionalPaths = additionalPaths;
this.filter = filter;
}
String nodeName = node.getName();
if (nodeName.startsWith("rep:") || nodeName.startsWith("jcr:"))
continue nodes;
+ if (fs.skipNode(node))
+ continue nodes;
next = new JcrPath(fs, node);
if (filter != null) {
if (filter.accept(next))
throw new JcrFsException("Could not get next path", e);
}
}
+
+ if (next == null) {
+ if (additionalPaths.hasNext())
+ next = additionalPaths.next();
+ }
+
return next != null;
}