diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java index 2122dc7eb..cab2baf4b 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java @@ -167,7 +167,9 @@ class DavFile extends DavNode { public ActiveLock lock(LockInfo reqLockInfo) throws DavException { ActiveLock lock = super.lock(reqLockInfo); if (!exists()) { - getCollection().addMember(this, new NullInputContext()); + DavFolder parentFolder = getCollection(); + assert parentFolder != null : "File always has a folder."; + parentFolder.addMember(this, new NullInputContext()); } return lock; } diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavNode.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavNode.java index 5fb6ef51c..6cb537b9e 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavNode.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavNode.java @@ -37,6 +37,7 @@ import org.apache.jackrabbit.webdav.property.DavPropertySet; import org.apache.jackrabbit.webdav.property.DefaultDavProperty; import org.apache.jackrabbit.webdav.property.PropEntry; import org.cryptomator.filesystem.jackrabbit.FileSystemResourceLocator; +import org.cryptomator.filesystem.jackrabbit.FolderLocator; abstract class DavNode implements DavResource { @@ -187,18 +188,14 @@ abstract class DavNode implements DavResour } @Override - public DavResource getCollection() { + public DavFolder getCollection() { if (node.isRootLocation()) { return null; } assert node.parent().isPresent() : "as my mom always sais: if it's not root, it has a parent"; - final FileSystemResourceLocator parentPath = node.parent().get(); - try { - return factory.createResource(parentPath, session); - } catch (DavException e) { - throw new IllegalStateException("Unable to get parent resource with path " + parentPath, e); - } + final FolderLocator parentPath = node.parent().get(); + return factory.createFolder(parentPath, session); } @Override diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/FilesystemResourceFactory.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/FilesystemResourceFactory.java index 829121c2b..43bce9663 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/FilesystemResourceFactory.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/FilesystemResourceFactory.java @@ -50,7 +50,7 @@ class FilesystemResourceFactory implements DavResourceFactory { } @Override - public DavResource createResource(DavResourceLocator locator, DavSession session) throws DavException { + public DavResource createResource(DavResourceLocator locator, DavSession session) { if (locator instanceof FolderLocator) { FolderLocator folder = (FolderLocator) locator; return createFolder(folder, session);