]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java
Improve Javadoc
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / fs / JcrFileSystemProvider.java
index 3e07697dc5c2699661a982af278731d544f82076..dcc59476ff646b59a97a54567958c325f19bbb84 100644 (file)
@@ -40,13 +40,16 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
                try {
                        Node node = toNode(path);
                        if (node == null) {
-                               Node parentNode = toNode(path.getParent());
-                               if (parentNode == null)
+                               Node parent = toNode(path.getParent());
+                               if (parent == null)
                                        throw new JcrFsException("No parent directory for " + path);
-                               if (!(parentNode.getPath().equals("/") || parentNode.isNodeType(NodeType.NT_FOLDER)))
-                                       throw new JcrFsException("Parent of " + path + " is not a directory");
+                               if (parent.getPrimaryNodeType().isNodeType(NodeType.NT_FILE)
+                                               || parent.getPrimaryNodeType().isNodeType(NodeType.NT_LINKED_FILE))
+                                       throw new JcrFsException(path + " parent is a file");
 
-                               node = parentNode.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);
                        }
@@ -76,9 +79,12 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
                                Node parent = toNode(dir.getParent());
                                if (parent == null)
                                        throw new IOException("Parent of " + dir + " does not exist");
-                               if (!(parent.getPath().equals("/") || parent.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER)))
-                                       throw new JcrFsException(dir + " parent is not a directory");
-                               node = parent.addNode(dir.getFileName().toString(), NodeType.NT_FOLDER);
+                               if (parent.getPrimaryNodeType().isNodeType(NodeType.NT_FILE)
+                                               || parent.getPrimaryNodeType().isNodeType(NodeType.NT_LINKED_FILE))
+                                       throw new JcrFsException(dir + " parent is a file");
+                               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();