]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.jcr/src/org/argeo/jcr/fs/JcrFileSystemProvider.java
Introduce multi-commands command line utilities.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / fs / JcrFileSystemProvider.java
index f1065be40a3ec4ac2dfb035597202ec3ba977962..7dbd4e43f88116e96a127b3b305fd1fae8dfe515 100644 (file)
@@ -30,7 +30,6 @@ import javax.jcr.Session;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.PropertyDefinition;
 
-import org.apache.commons.io.FileExistsException;
 import org.argeo.jcr.JcrUtils;
 
 public abstract class JcrFileSystemProvider extends FileSystemProvider {
@@ -56,7 +55,7 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
                        }
                        if (!node.isNodeType(NodeType.NT_FILE))
                                throw new UnsupportedOperationException(node + " must be a file");
-                       return new BinaryChannel(node);
+                       return new BinaryChannel(node, path);
                } catch (RepositoryException e) {
                        discardChanges(node);
                        throw new IOException("Cannot read file", e);
@@ -67,6 +66,8 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
        public DirectoryStream<Path> newDirectoryStream(Path dir, Filter<? super Path> filter) throws IOException {
                try {
                        Node base = toNode(dir);
+                       if (base == null)
+                               throw new IOException(dir + " is not a JCR node");
                        return new NodeDirectoryStream((JcrFileSystem) dir.getFileSystem(), base.getNodes(), filter);
                } catch (RepositoryException e) {
                        throw new IOException("Cannot list directory", e);
@@ -91,8 +92,8 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
                                node.addMixin(NodeType.MIX_LAST_MODIFIED);
                                node.getSession().save();
                        } else {
-                               if (!node.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER))
-                                       throw new FileExistsException(dir + " exists and is not a directory");
+                               // if (!node.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER))
+                               // throw new FileExistsException(dir + " exists and is not a directory");
                        }
                } catch (RepositoryException e) {
                        discardChanges(node);
@@ -170,7 +171,7 @@ public abstract class JcrFileSystemProvider extends FileSystemProvider {
 
        @Override
        public boolean isHidden(Path path) throws IOException {
-               return false;
+               return path.getFileName().toString().charAt(0) == '.';
        }
 
        @Override