IJent cleanup: extract method FsAndUserApi.create

GitOrigin-RevId: 82036afa1725914a7beb4dfb707b35bebd6c5003
This commit is contained in:
Vladimir Lagunov
2024-05-16 16:57:24 +02:00
committed by intellij-monorepo-bot
parent a22f1c994e
commit 092fb70a2b
2 changed files with 16 additions and 13 deletions

View File

@@ -2,9 +2,7 @@
package com.intellij.platform.ijent.community.impl.nio
import com.intellij.openapi.progress.runBlockingMaybeCancellable
import com.intellij.platform.ijent.IjentInfo
import com.intellij.platform.ijent.IjentPosixInfo
import com.intellij.platform.ijent.IjentWindowsInfo
import com.intellij.platform.ijent.*
import com.intellij.platform.ijent.fs.*
import kotlinx.coroutines.isActive
import java.nio.file.FileStore
@@ -26,6 +24,13 @@ class IjentNioFileSystem internal constructor(
data class Posix(override val fs: IjentFileSystemPosixApi, override val userInfo: IjentPosixInfo.User) : FsAndUserApi
data class Windows(override val fs: IjentFileSystemWindowsApi, override val userInfo: IjentWindowsInfo.User) : FsAndUserApi
companion object {
fun create(ijentApi: IjentApi): FsAndUserApi = when (ijentApi) {
is IjentPosixApi -> Posix(ijentApi.fs, ijentApi.info.user)
is IjentWindowsApi -> Windows(ijentApi.fs, ijentApi.info.user)
}
}
}
override fun close() {

View File

@@ -2,11 +2,9 @@
package com.intellij.platform.ijent.community.impl.nio
import com.intellij.platform.ijent.IjentId
import com.intellij.platform.ijent.IjentPosixApi
import com.intellij.platform.ijent.IjentSessionRegistry
import com.intellij.platform.ijent.IjentWindowsApi
import com.intellij.platform.ijent.community.impl.IjentFsResultImpl
import com.intellij.platform.ijent.community.impl.nio.IjentNioFileSystem.*
import com.intellij.platform.ijent.community.impl.nio.IjentNioFileSystem.FsAndUserApi
import com.intellij.platform.ijent.community.impl.nio.IjentNioFileSystemProvider.UnixFilePermissionBranch.*
import com.intellij.platform.ijent.fs.*
import com.intellij.platform.ijent.fs.IjentFileInfo.Type.*
@@ -51,13 +49,13 @@ class IjentNioFileSystemProvider : FileSystemProvider() {
val ijentId = IjentId(uri.host)
val fs = IjentNioFileSystem(
this,
when (val ijentApi = IjentSessionRegistry.instance().ijents[ijentId]) {
is IjentPosixApi -> FsAndUserApi.Posix(ijentApi.fs, ijentApi.info.user)
is IjentWindowsApi -> FsAndUserApi.Windows(ijentApi.fs, ijentApi.info.user)
null -> throw IllegalArgumentException("$ijentApi is not registered in ${IjentSessionRegistry::class.java.simpleName}")
})
val ijentApi = IjentSessionRegistry.instance().ijents[ijentId]
require(ijentApi != null) {
"$ijentApi is not registered in ${IjentSessionRegistry::class.java.simpleName}"
}
val ijentFsAndUser = FsAndUserApi.create(ijentApi)
val fs = IjentNioFileSystem(this, ijentFsAndUser)
if (registeredFileSystems.putIfAbsent(ijentId, fs) != null) {
throw FileSystemAlreadyExistsException("A filesystem for $ijentId is already registered")