Remove some unwraps

This commit is contained in:
Julian Raufelder 2021-07-06 17:38:10 +02:00
parent c23a5a2cfc
commit 10e03d3df2
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
8 changed files with 48 additions and 48 deletions

View File

@ -17,6 +17,7 @@ import org.cryptomator.domain.exception.AlreadyExistException
import org.cryptomator.domain.exception.BackendException import org.cryptomator.domain.exception.BackendException
import org.cryptomator.domain.exception.EmptyDirFileException import org.cryptomator.domain.exception.EmptyDirFileException
import org.cryptomator.domain.exception.NoSuchCloudFileException import org.cryptomator.domain.exception.NoSuchCloudFileException
import org.cryptomator.domain.exception.ParentFolderIsNullException
import org.cryptomator.domain.repository.CloudContentRepository import org.cryptomator.domain.repository.CloudContentRepository
import org.cryptomator.domain.usecases.ProgressAware import org.cryptomator.domain.usecases.ProgressAware
import org.cryptomator.domain.usecases.cloud.ByteArrayDataSource.Companion.from import org.cryptomator.domain.usecases.cloud.ByteArrayDataSource.Companion.from
@ -214,14 +215,15 @@ internal class CryptoImplVaultFormatPre7(
@Throws(BackendException::class) @Throws(BackendException::class)
override fun move(source: CryptoFolder, target: CryptoFolder): CryptoFolder { override fun move(source: CryptoFolder, target: CryptoFolder): CryptoFolder {
requireNotNull(target.parent)
requireNotNull(source.dirFile) requireNotNull(source.dirFile)
requireNotNull(target.dirFile) requireNotNull(target.dirFile)
assertCryptoFolderAlreadyExists(target) target.parent?.let {
val result = folder(target.parent!!, target.name, cloudContentRepository.move(source.dirFile, target.dirFile)) assertCryptoFolderAlreadyExists(target)
evictFromCache(source) val result = folder(it, target.name, cloudContentRepository.move(source.dirFile, target.dirFile))
evictFromCache(target) evictFromCache(source)
return result evictFromCache(target)
return result
} ?: throw ParentFolderIsNullException(target.name)
} }
@Throws(BackendException::class) @Throws(BackendException::class)

View File

@ -35,8 +35,9 @@ abstract class Cryptors internal constructor() {
@Synchronized @Synchronized
fun removeDelegate() { fun removeDelegate() {
fallback.putAll(delegate!!.cryptors) delegate?.let {
delegate = null fallback.putAll(it.cryptors)
}.also { delegate = null }
} }
@Synchronized @Synchronized

View File

@ -35,6 +35,6 @@ open class LocalStorageAccessFolder(override val parent: LocalStorageAccessFolde
} }
override fun withCloud(cloud: Cloud?): LocalStorageAccessFolder? { override fun withCloud(cloud: Cloud?): LocalStorageAccessFolder? {
return LocalStorageAccessFolder(parent!!.withCloud(cloud), name, path, documentId, documentUri) return LocalStorageAccessFolder(parent?.withCloud(cloud), name, path, documentId, documentUri)
} }
} }

View File

@ -53,9 +53,12 @@ internal object OnedriveCloudNodeFactory {
} }
@JvmStatic @JvmStatic
fun getDriveId(item: DriveItem): String { fun getDriveId(item: DriveItem): String? {
return if (item.remoteItem != null) item.remoteItem.parentReference.driveId return when {
else (if (item.parentReference != null) item.parentReference.driveId else null)!! item.remoteItem != null -> item.remoteItem.parentReference.driveId
item.parentReference != null -> item.parentReference.driveId
else -> null
}
} }
@JvmStatic @JvmStatic

View File

@ -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, "") constructor(node: OnedriveIdCloudNode) : this(node.id, node.driveId, node is CloudFolder, "")
fun getcTag(): String? { fun getcTag(): String? {

View File

@ -28,7 +28,6 @@ import org.cryptomator.domain.exception.BackendException
import org.cryptomator.domain.exception.CloudNodeAlreadyExistsException import org.cryptomator.domain.exception.CloudNodeAlreadyExistsException
import org.cryptomator.domain.exception.FatalBackendException import org.cryptomator.domain.exception.FatalBackendException
import org.cryptomator.domain.exception.NoSuchCloudFileException import org.cryptomator.domain.exception.NoSuchCloudFileException
import org.cryptomator.domain.exception.ParentFolderDoesNotExistException
import org.cryptomator.domain.exception.ParentFolderIsNullException import org.cryptomator.domain.exception.ParentFolderIsNullException
import org.cryptomator.domain.exception.authentication.NoAuthenticationProvidedException import org.cryptomator.domain.exception.authentication.NoAuthenticationProvidedException
import org.cryptomator.domain.usecases.ProgressAware import org.cryptomator.domain.usecases.ProgressAware
@ -121,7 +120,7 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach
fun exists(node: OnedriveNode): Boolean { fun exists(node: OnedriveNode): Boolean {
node.parent?.let { node.parent?.let {
val parentNodeInfo = nodeInfo(it) val parentNodeInfo = nodeInfo(it)
if (parentNodeInfo == null) { if (parentNodeInfo?.driveId == null) {
removeNodeInfo(node) removeNodeInfo(node)
return false return false
} }
@ -161,22 +160,22 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach
@Throws(NoSuchCloudFileException::class) @Throws(NoSuchCloudFileException::class)
fun create(folder: OnedriveFolder): OnedriveFolder { fun create(folder: OnedriveFolder): OnedriveFolder {
var parent = folder.parent var parent = folder.parent
if (nodeInfo(parent!!) == null) { //FIXME parent?.let { parentFolder ->
if (parent == null) { if (nodeInfo(parentFolder) == null) {
throw ParentFolderDoesNotExistException() parent = create(parentFolder)
} else {
parent = create(parent)
} }
} } ?: throw ParentFolderIsNullException(folder.name)
val folderToCreate = DriveItem() parent?.let { parentFolder ->
folderToCreate.name = folder.name val folderToCreate = DriveItem()
folderToCreate.folder = Folder() folderToCreate.name = folder.name
val parentNodeInfo = requireNodeInfo(parent) folderToCreate.folder = Folder()
val createdFolder = drive(parentNodeInfo.driveId) // val parentNodeInfo = requireNodeInfo(parentFolder)
.items(parentNodeInfo.id).children() // val createdFolder = drive(parentNodeInfo.driveId) //
.buildRequest() // .items(parentNodeInfo.id).children() //
.post(folderToCreate) .buildRequest() //
return cacheNodeInfo(folder(parent, createdFolder), createdFolder) .post(folderToCreate)
return cacheNodeInfo(folder(parentFolder, createdFolder), createdFolder)
} ?: throw ParentFolderIsNullException(folder.name)
} }
@Throws(NoSuchCloudFileException::class, CloudNodeAlreadyExistsException::class) @Throws(NoSuchCloudFileException::class, CloudNodeAlreadyExistsException::class)
@ -405,7 +404,7 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach
} }
private fun nodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? { private fun nodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? {
var result: OnedriveIdCache.NodeInfo? = nodeInfoCache[node.path] var result = nodeInfoCache[node.path]
if (result == null) { if (result == null) {
result = loadNodeInfo(node) result = loadNodeInfo(node)
if (result == null) { if (result == null) {
@ -419,15 +418,8 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach
} else result } else result
} }
private fun <T : OnedriveNode?> cacheNodeInfo(node: T, item: DriveItem): T { private fun <T : OnedriveNode> cacheNodeInfo(node: T, item: DriveItem): T {
nodeInfoCache.add( // nodeInfoCache.add(node.path, OnedriveIdCache.NodeInfo(getId(item), getDriveId(item), isFolder(item), item.cTag))
node?.path!!, OnedriveIdCache.NodeInfo( //
getId(item), //
getDriveId(item), //
isFolder(item), //
item.cTag //
) //
)
return node return node
} }
@ -454,7 +446,10 @@ internal class OnedriveImpl(cloud: OnedriveCloud, context: Context, nodeInfoCach
private fun loadNonRootNodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? { private fun loadNonRootNodeInfo(node: OnedriveNode): OnedriveIdCache.NodeInfo? {
node.parent?.let { targetsParent -> 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) val item = childByName(parentNodeInfo.id, parentNodeInfo.driveId, node.name)
return if (item == null) { return if (item == null) {
null null

View File

@ -28,8 +28,8 @@ internal object PCloudNodeFactory {
} }
@JvmStatic @JvmStatic
fun folder(parent: PCloudFolder?, name: String, path: String?): PCloudFolder { fun folder(parent: PCloudFolder?, name: String, path: String): PCloudFolder {
return PCloudFolder(parent, name, path!!) return PCloudFolder(parent, name, path)
} }
fun getNodePath(parent: PCloudFolder, name: String): String { fun getNodePath(parent: PCloudFolder, name: String): String {

View File

@ -114,12 +114,11 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
@Throws(IOException::class) @Throws(IOException::class)
fun exists(node: GoogleDriveNode): Boolean { fun exists(node: GoogleDriveNode): Boolean {
return try { return try {
requireNotNull(node.parent) node.parent?.let { nodesParent ->
val file = findFile(node.parent!!.driveId, node.name) findFile(nodesParent.driveId, node.name)?.let { idCache.add(GoogleDriveCloudNodeFactory.from(nodesParent, it)) } != null
file?.let { idCache.add(GoogleDriveCloudNodeFactory.from(node.parent!!, it)) } } ?: throw ParentFolderIsNullException(node.name)
file != null
} catch (e: GoogleJsonResponseException) { } catch (e: GoogleJsonResponseException) {
if(e.statusCode == 404) { if (e.statusCode == 404) {
return false return false
} }
throw e throw e