Rename home repository into ego repository.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / fs / NodeDirectoryStream.java
index dbf6745360a7928b7d910bb342358ed2d33a1509..eda07a548eff2355876c4f3943db53cf3492b02b 100644 (file)
@@ -11,11 +11,14 @@ import javax.jcr.NodeIterator;
 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;
        }
 
@@ -35,6 +38,11 @@ public class NodeDirectoryStream implements DirectoryStream<Path> {
                                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<Path> {
                                                throw new JcrFsException("Could not get next path", e);
                                        }
                                }
+
+                               if (next == null) {
+                                       if (additionalPaths.hasNext())
+                                               next = additionalPaths.next();
+                               }
+
                                return next != null;
                        }