X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2Ffs%2FNodeDirectoryStream.java;h=eda07a548eff2355876c4f3943db53cf3492b02b;hb=2afabd9e7b225f80b341063e25188314394c9aef;hp=892aaee1aa2b1084f94f6cfec692b05d0511bbaa;hpb=088c1b517a543e935d8ab65c3b2fd2d0269b551d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/fs/NodeDirectoryStream.java b/org.argeo.jcr/src/org/argeo/jcr/fs/NodeDirectoryStream.java index 892aaee1a..eda07a548 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/fs/NodeDirectoryStream.java +++ b/org.argeo.jcr/src/org/argeo/jcr/fs/NodeDirectoryStream.java @@ -11,11 +11,14 @@ import javax.jcr.NodeIterator; public class NodeDirectoryStream implements DirectoryStream { private final JcrFileSystem fs; private final NodeIterator nodeIterator; + private final Iterator additionalPaths; private final Filter filter; - public NodeDirectoryStream(JcrFileSystem fs, NodeIterator nodeIterator, Filter filter) { + public NodeDirectoryStream(JcrFileSystem fs, NodeIterator nodeIterator, Iterator additionalPaths, + Filter filter) { this.fs = fs; this.nodeIterator = nodeIterator; + this.additionalPaths = additionalPaths; this.filter = filter; } @@ -38,6 +41,8 @@ public class NodeDirectoryStream implements DirectoryStream { 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)) @@ -48,6 +53,12 @@ public class NodeDirectoryStream implements DirectoryStream { throw new JcrFsException("Could not get next path", e); } } + + if (next == null) { + if (additionalPaths.hasNext()) + next = additionalPaths.next(); + } + return next != null; }