From 092fb70a2bb8627605db63b91934f226cb1fffbf Mon Sep 17 00:00:00 2001 From: Vladimir Lagunov Date: Thu, 16 May 2024 16:57:24 +0200 Subject: [PATCH] IJent cleanup: extract method FsAndUserApi.create GitOrigin-RevId: 82036afa1725914a7beb4dfb707b35bebd6c5003 --- .../community/impl/nio/IjentNioFileSystem.kt | 11 ++++++++--- .../impl/nio/IjentNioFileSystemProvider.kt | 18 ++++++++---------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystem.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystem.kt index e46418ea3ab1..44690b02c8b0 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystem.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystem.kt @@ -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() { diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemProvider.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemProvider.kt index 9d5c5c8dc798..13d9a5fb3dbc 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemProvider.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemProvider.kt @@ -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")