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);
}
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();