import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.PropertyType;
+import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
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);
+ JcrFileSystem fileSystem = (JcrFileSystem) dir.getFileSystem();
+ return new NodeDirectoryStream(fileSystem, base.getNodes(), fileSystem.listDirectMounts(dir), filter);
} catch (RepositoryException e) {
throw new IOException("Cannot list directory", e);
}
@Override
public void move(Path source, Path target, CopyOption... options) throws IOException {
- Node sourceNode = toNode(source);
+ JcrFileSystem sourceFileSystem = (JcrFileSystem) source.getFileSystem();
+ WorkspaceFileStore sourceStore = sourceFileSystem.getFileStore(source.toString());
+ WorkspaceFileStore targetStore = sourceFileSystem.getFileStore(target.toString());
try {
- Session session = sourceNode.getSession();
- synchronized (session) {
- session.move(sourceNode.getPath(), target.toString());
- save(session);
+ if (sourceStore.equals(targetStore)) {
+ sourceStore.getWorkspace().move(sourceStore.toJcrPath(source.toString()),
+ targetStore.toJcrPath(target.toString()));
+ } else {
+ // TODO implement it
+ throw new UnsupportedOperationException("Can only move paths within the same workspace.");
}
} catch (RepositoryException e) {
- discardChanges(sourceNode);
throw new IOException("Cannot move from " + source + " to " + target, e);
}
+
+// Node sourceNode = toNode(source);
+// try {
+// Session session = sourceNode.getSession();
+// synchronized (session) {
+// session.move(sourceNode.getPath(), target.toString());
+// save(session);
+// }
+// } catch (RepositoryException e) {
+// discardChanges(sourceNode);
+// throw new IOException("Cannot move from " + source + " to " + target, e);
+// }
}
@Override
@Override
public void checkAccess(Path path, AccessMode... modes) throws IOException {
- try {
- Session session = ((JcrFileSystem) path.getFileSystem()).getSession();
- if (!session.itemExists(path.toString()))
- throw new NoSuchFileException(path + " does not exist");
- // TODO check access via JCR api
- } catch (RepositoryException e) {
- throw new IOException("Cannot delete " + path, e);
- }
+ Node node = toNode(path);
+ if (node == null)
+ throw new NoSuchFileException(path + " does not exist");
+ // TODO check access via JCR api
}
@Override
*
* @return null by default
*/
- public Node getUserHome(Session session) {
+ public Node getUserHome(Repository session) {
return null;
}