Remove some unwraps
This commit is contained in:
parent
c23a5a2cfc
commit
10e03d3df2
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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? {
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user