X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2Ffs%2FJcrFileSystem.java;h=65edf1d91bffde5d44f23722888bde750c994d35;hb=5ec9d72c96b13bf18d702bf01dc2c03b0aee43a4;hp=885eaf19f4b0962b850de47122b36601ad0f0603;hpb=d8037dd6a59ff5d38d7c7182a9ef6c26c8001a4f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystem.java b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystem.java index 885eaf19f..65edf1d91 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystem.java +++ b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystem.java @@ -11,19 +11,41 @@ import java.nio.file.spi.FileSystemProvider; import java.util.HashSet; import java.util.Set; +import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.nodetype.NodeType; import org.argeo.jcr.JcrUtils; public class JcrFileSystem extends FileSystem { private final JcrFileSystemProvider provider; private final Session session; + private String userHomePath = null; - public JcrFileSystem(JcrFileSystemProvider provider, Session session) { + public JcrFileSystem(JcrFileSystemProvider provider, Session session) throws IOException { super(); this.provider = provider; this.session = session; + Node userHome = provider.getUserHome(session); + if (userHome != null) + try { + userHomePath = userHome.getPath(); + } catch (RepositoryException e) { + throw new IOException("Cannot retrieve user home path", e); + } + } + + /** Whetehr this node should be skippe din directory listings */ + public boolean skipNode(Node node) throws RepositoryException { + if (node.isNodeType(NodeType.NT_HIERARCHY_NODE) || node.isNodeType("node:userHome") + || node.isNodeType("node:groupHome")) + return false; + return true; + } + + public String getUserHomePath() { + return userHomePath; } @Override