X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2Ffs%2FJcrFileSystemProvider.java;h=1e2864d248a8b9d998a34f874a773710f7a63ca0;hb=36c14000ab482f558a9679f75ac7bfb0953171f4;hp=17665a0a4a0735557699a24b5322c08e820aee8a;hpb=e1103912972d44e0b1014cc09170b32092ddaf00;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java index 17665a0a4..1e2864d24 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java +++ b/org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java @@ -47,7 +47,9 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider { || parent.getPrimaryNodeType().isNodeType(NodeType.NT_LINKED_FILE)) throw new JcrFsException(path + " parent is a file"); - node = parent.addNode(path.getFileName().toString(), NodeType.NT_FILE); + String fileName = path.getFileName().toString(); + fileName = Text.escapeIllegalJcrChars(fileName); + node = parent.addNode(fileName, NodeType.NT_FILE); node.addMixin(NodeType.MIX_CREATED); node.addMixin(NodeType.MIX_LAST_MODIFIED); } @@ -80,7 +82,9 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider { if (parent.getPrimaryNodeType().isNodeType(NodeType.NT_FILE) || parent.getPrimaryNodeType().isNodeType(NodeType.NT_LINKED_FILE)) throw new JcrFsException(dir + " parent is a file"); - node = parent.addNode(dir.getFileName().toString(), NodeType.NT_FOLDER); + String fileName = dir.getFileName().toString(); + fileName = Text.escapeIllegalJcrChars(fileName); + node = parent.addNode(fileName, NodeType.NT_FOLDER); node.addMixin(NodeType.MIX_CREATED); node.addMixin(NodeType.MIX_LAST_MODIFIED); node.getSession().save(); @@ -193,6 +197,9 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider { try { // TODO check if assignable Node node = toNode(path); + if(node==null) { + throw new JcrFsException("JCR node not found for "+path); + } return (A) new JcrBasicfileAttributes(node); } catch (RepositoryException e) { throw new JcrFsException("Cannot read basic attributes of " + path, e); @@ -260,4 +267,13 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider { return ((JcrPath) path).getNode(); } + /** + * To be overriden in order to support the ~ path, with an implementation + * specific concept of user home. + * + * @return null by default + */ + public Node getUserHome(Session session) { + return null; + } }