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=dbf6745360a7928b7d910bb342358ed2d33a1509;hpb=d8037dd6a59ff5d38d7c7182a9ef6c26c8001a4f;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 dbf674536..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; } @@ -35,6 +38,11 @@ public class NodeDirectoryStream implements DirectoryStream { nodes: while (nodeIterator.hasNext()) { try { Node node = nodeIterator.nextNode(); + 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)) @@ -45,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; }