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.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)

View File

@ -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

View File

@ -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)
}
}

View File

@ -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

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, "")
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.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 <T : OnedriveNode?> cacheNodeInfo(node: T, item: DriveItem): T {
nodeInfoCache.add( //
node?.path!!, OnedriveIdCache.NodeInfo( //
getId(item), //
getDriveId(item), //
isFolder(item), //
item.cTag //
) //
)
private fun <T : OnedriveNode> 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

View File

@ -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 {

View File

@ -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