Browse Source

code simplification, added further assertions for Coverity issue 72293

Sebastian Stenzel 9 năm trước cách đây
mục cha
commit
adc20ea2f2

+ 3 - 1
main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java

@@ -167,7 +167,9 @@ class DavFile extends DavNode<FileLocator> {
 	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;
 	}

+ 4 - 7
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<T extends FileSystemResourceLocator> implements DavResource {
 
@@ -187,18 +188,14 @@ abstract class DavNode<T extends FileSystemResourceLocator> 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

+ 1 - 1
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);