From 10e03d3df2817a40a9ae138466f7f659bddb2548 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 6 Jul 2021 17:38:10 +0200 Subject: [PATCH] Remove some unwraps --- .../cloud/crypto/CryptoImplVaultFormatPre7.kt | 14 ++--- .../cryptomator/data/cloud/crypto/Cryptors.kt | 5 +- .../LocalStorageAccessFolder.kt | 2 +- .../onedrive/OnedriveCloudNodeFactory.kt | 9 ++-- .../data/cloud/onedrive/OnedriveIdCache.kt | 2 +- .../data/cloud/onedrive/OnedriveImpl.kt | 51 +++++++++---------- .../data/cloud/pcloud/PCloudNodeFactory.kt | 4 +- .../data/cloud/googledrive/GoogleDriveImpl.kt | 9 ++-- 8 files changed, 48 insertions(+), 48 deletions(-) diff --git a/data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormatPre7.kt b/data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormatPre7.kt index f3514360..4222f8f3 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormatPre7.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/crypto/CryptoImplVaultFormatPre7.kt @@ -17,6 +17,7 @@ import org.cryptomator.domain.exception.AlreadyExistException import org.cryptomator.domain.exception.BackendException import org.cryptomator.domain.exception.EmptyDirFileException import org.cryptomator.domain.exception.NoSuchCloudFileException +import org.cryptomator.domain.exception.ParentFolderIsNullException import org.cryptomator.domain.repository.CloudContentRepository import org.cryptomator.domain.usecases.ProgressAware import org.cryptomator.domain.usecases.cloud.ByteArrayDataSource.Companion.from @@ -214,14 +215,15 @@ internal class CryptoImplVaultFormatPre7( @Throws(BackendException::class) override fun move(source: CryptoFolder, target: CryptoFolder): CryptoFolder { - requireNotNull(target.parent) requireNotNull(source.dirFile) requireNotNull(target.dirFile) - assertCryptoFolderAlreadyExists(target) - val result = folder(target.parent!!, target.name, cloudContentRepository.move(source.dirFile, target.dirFile)) - evictFromCache(source) - evictFromCache(target) - return result + target.parent?.let { + assertCryptoFolderAlreadyExists(target) + val result = folder(it, target.name, cloudContentRepository.move(source.dirFile, target.dirFile)) + evictFromCache(source) + evictFromCache(target) + return result + } ?: throw ParentFolderIsNullException(target.name) } @Throws(BackendException::class) diff --git a/data/src/main/java/org/cryptomator/data/cloud/crypto/Cryptors.kt b/data/src/main/java/org/cryptomator/data/cloud/crypto/Cryptors.kt index e20117f9..485c5078 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/crypto/Cryptors.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/crypto/Cryptors.kt @@ -35,8 +35,9 @@ abstract class Cryptors internal constructor() { @Synchronized fun removeDelegate() { - fallback.putAll(delegate!!.cryptors) - delegate = null + delegate?.let { + fallback.putAll(it.cryptors) + }.also { delegate = null } } @Synchronized diff --git a/data/src/main/java/org/cryptomator/data/cloud/local/storageaccessframework/LocalStorageAccessFolder.kt b/data/src/main/java/org/cryptomator/data/cloud/local/storageaccessframework/LocalStorageAccessFolder.kt index 2416f61b..af3d8027 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/local/storageaccessframework/LocalStorageAccessFolder.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/local/storageaccessframework/LocalStorageAccessFolder.kt @@ -35,6 +35,6 @@ open class LocalStorageAccessFolder(override val parent: LocalStorageAccessFolde } override fun withCloud(cloud: Cloud?): LocalStorageAccessFolder? { - return LocalStorageAccessFolder(parent!!.withCloud(cloud), name, path, documentId, documentUri) + return LocalStorageAccessFolder(parent?.withCloud(cloud), name, path, documentId, documentUri) } } diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudNodeFactory.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudNodeFactory.kt index c2bab99e..85aa7b45 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudNodeFactory.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveCloudNodeFactory.kt @@ -53,9 +53,12 @@ internal object OnedriveCloudNodeFactory { } @JvmStatic - fun getDriveId(item: DriveItem): String { - return if (item.remoteItem != null) item.remoteItem.parentReference.driveId - else (if (item.parentReference != null) item.parentReference.driveId else null)!! + fun getDriveId(item: DriveItem): String? { + return when { + item.remoteItem != null -> item.remoteItem.parentReference.driveId + item.parentReference != null -> item.parentReference.driveId + else -> null + } } @JvmStatic diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveIdCache.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveIdCache.kt index 38ac5eff..9580991a 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveIdCache.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveIdCache.kt @@ -43,7 +43,7 @@ internal class OnedriveIdCache @Inject constructor() { } } - internal class NodeInfo(val id: String, val driveId: String, val isFolder: Boolean, private val cTag: String?) { + internal class NodeInfo(val id: String, val driveId: String?, val isFolder: Boolean, private val cTag: String?) { constructor(node: OnedriveIdCloudNode) : this(node.id, node.driveId, node is CloudFolder, "") fun getcTag(): String? { diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt index ba1a9cee..692a260a 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveImpl.kt @@ -28,7 +28,6 @@ import org.cryptomator.domain.exception.BackendException import org.cryptomator.domain.exception.CloudNodeAlreadyExistsException import org.cryptomator.domain.exception.FatalBackendException import org.cryptomator.domain.exception.NoSuchCloudFileException -import org.cryptomator.domain.exception.ParentFolderDoesNotExistException import org.cryptomator.domain.exception.ParentFolderIsNullException import org.cryptomator.domain.exception.authentication.NoAuthenticationProvidedException import org.cryptomator.domain.usecases.ProgressAware @@ -121,7 +120,7 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach fun exists(node: OnedriveNode): Boolean { node.parent?.let { val parentNodeInfo = nodeInfo(it) - if (parentNodeInfo == null) { + if (parentNodeInfo?.driveId == null) { removeNodeInfo(node) return false } @@ -161,22 +160,22 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach @Throws(NoSuchCloudFileException::class) fun create(folder: OnedriveFolder): OnedriveFolder { var parent = folder.parent - if (nodeInfo(parent!!) == null) { //FIXME - if (parent == null) { - throw ParentFolderDoesNotExistException() - } else { - parent = create(parent) + parent?.let { parentFolder -> + if (nodeInfo(parentFolder) == null) { + parent = create(parentFolder) } - } - val folderToCreate = DriveItem() - folderToCreate.name = folder.name - folderToCreate.folder = Folder() - val parentNodeInfo = requireNodeInfo(parent) - val createdFolder = drive(parentNodeInfo.driveId) // - .items(parentNodeInfo.id).children() // - .buildRequest() // - .post(folderToCreate) - return cacheNodeInfo(folder(parent, createdFolder), createdFolder) + } ?: throw ParentFolderIsNullException(folder.name) + parent?.let { parentFolder -> + val folderToCreate = DriveItem() + folderToCreate.name = folder.name + folderToCreate.folder = Folder() + val parentNodeInfo = requireNodeInfo(parentFolder) + val createdFolder = drive(parentNodeInfo.driveId) // + .items(parentNodeInfo.id).children() // + .buildRequest() // + .post(folderToCreate) + return cacheNodeInfo(folder(parentFolder, createdFolder), createdFolder) + } ?: throw ParentFolderIsNullException(folder.name) } @Throws(NoSuchCloudFileException::class, CloudNodeAlreadyExistsException::class) @@ -405,7 +404,7 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach } private fun nodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? { - var result: OnedriveIdCache.NodeInfo? = nodeInfoCache[node.path] + var result = nodeInfoCache[node.path] if (result == null) { result = loadNodeInfo(node) if (result == null) { @@ -419,15 +418,8 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach } else result } - private fun cacheNodeInfo(node: T, item: DriveItem): T { - nodeInfoCache.add( // - node?.path!!, OnedriveIdCache.NodeInfo( // - getId(item), // - getDriveId(item), // - isFolder(item), // - item.cTag // - ) // - ) + private fun cacheNodeInfo(node: T, item: DriveItem): T { + nodeInfoCache.add(node.path, OnedriveIdCache.NodeInfo(getId(item), getDriveId(item), isFolder(item), item.cTag)) return node } @@ -454,7 +446,10 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach private fun loadNonRootNodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? { node.parent?.let { targetsParent -> - val parentNodeInfo = nodeInfo(targetsParent) ?: return null + val parentNodeInfo = nodeInfo(targetsParent) + if (parentNodeInfo?.driveId == null) { + return null + } val item = childByName(parentNodeInfo.id, parentNodeInfo.driveId, node.name) return if (item == null) { null diff --git a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNodeFactory.kt b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNodeFactory.kt index 4a718ba6..e761210c 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNodeFactory.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/pcloud/PCloudNodeFactory.kt @@ -28,8 +28,8 @@ internal object PCloudNodeFactory { } @JvmStatic - fun folder(parent: PCloudFolder?, name: String, path: String?): PCloudFolder { - return PCloudFolder(parent, name, path!!) + fun folder(parent: PCloudFolder?, name: String, path: String): PCloudFolder { + return PCloudFolder(parent, name, path) } fun getNodePath(parent: PCloudFolder, name: String): String { diff --git a/data/src/notFoss/java/org/cryptomator/data/cloud/googledrive/GoogleDriveImpl.kt b/data/src/notFoss/java/org/cryptomator/data/cloud/googledrive/GoogleDriveImpl.kt index c01f1541..2e1c107b 100644 --- a/data/src/notFoss/java/org/cryptomator/data/cloud/googledrive/GoogleDriveImpl.kt +++ b/data/src/notFoss/java/org/cryptomator/data/cloud/googledrive/GoogleDriveImpl.kt @@ -114,12 +114,11 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl @Throws(IOException::class) fun exists(node: GoogleDriveNode): Boolean { return try { - requireNotNull(node.parent) - val file = findFile(node.parent!!.driveId, node.name) - file?.let { idCache.add(GoogleDriveCloudNodeFactory.from(node.parent!!, it)) } - file != null + node.parent?.let { nodesParent -> + findFile(nodesParent.driveId, node.name)?.let { idCache.add(GoogleDriveCloudNodeFactory.from(nodesParent, it)) } != null + } ?: throw ParentFolderIsNullException(node.name) } catch (e: GoogleJsonResponseException) { - if(e.statusCode == 404) { + if (e.statusCode == 404) { return false } throw e