From bbedb129a3563024e0402f09550c7a143d47c4fa Mon Sep 17 00:00:00 2001 From: Vladimir Lagunov Date: Tue, 17 Sep 2024 14:36:23 +0200 Subject: [PATCH] EelApi: move IjentPath to intellij.platform.eel GitOrigin-RevId: fdae3e80a498e2c6480cd62fb7f82c2b6d3cb72d --- .idea/modules.xml | 1 + platform/eel/intellij.platform.eel.tests.iml | 18 ++++++++++++++++++ .../eel/path}/ArrayListIjentAbsolutePath.kt | 6 +++--- .../eel/path}/ArrayListIjentRelativePath.kt | 11 ++++------- .../intellij/platform/eel/path}/IjentPath.kt | 5 +++-- .../platform/eel/path/package-info.java | 5 +++++ .../eel/path}/IjentAbsolutePathTest.kt | 8 +++----- .../eel/path}/IjentRelativePathTest.kt | 4 +--- .../intellij.platform.ijent.community.impl.iml | 1 - .../impl/IjentFailSafeFileSystemPosixApi.kt | 1 + .../ijent/community/impl/IjentFsResultImpl.kt | 1 + .../community/impl/IjentPosixFileInfoImpl.kt | 2 +- .../community/impl/nio/IjentNioFileChannel.kt | 1 + .../community/impl/nio/IjentNioFileSystem.kt | 2 ++ .../impl/nio/IjentNioFileSystemProvider.kt | 3 ++- .../impl/nio/IjentNioFileSystemUtil.kt | 2 ++ .../ijent/community/impl/nio/IjentNioPath.kt | 4 ++-- .../platform/ijent/fs/IjentFileInfo.kt | 1 + .../platform/ijent/fs/IjentFileSystemApi.kt | 1 + .../IjentFileSystemApiArgumentBuildersImpl.kt | 1 + .../platform/ijent/fs/IjentFsResult.kt | 1 + 21 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 platform/eel/intellij.platform.eel.tests.iml rename platform/{ijent/src/com/intellij/platform/ijent/fs => eel/src/com/intellij/platform/eel/path}/ArrayListIjentAbsolutePath.kt (98%) rename platform/{ijent/src/com/intellij/platform/ijent/fs => eel/src/com/intellij/platform/eel/path}/ArrayListIjentRelativePath.kt (94%) rename platform/{ijent/src/com/intellij/platform/ijent/fs => eel/src/com/intellij/platform/eel/path}/IjentPath.kt (98%) create mode 100644 platform/eel/src/com/intellij/platform/eel/path/package-info.java rename platform/{ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio => eel/tests/com/intellij/platform/eel/path}/IjentAbsolutePathTest.kt (84%) rename platform/{ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio => eel/tests/com/intellij/platform/eel/path}/IjentRelativePathTest.kt (94%) diff --git a/.idea/modules.xml b/.idea/modules.xml index 0475398b04e4..6587d1ce1ca9 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -644,6 +644,7 @@ + diff --git a/platform/eel/intellij.platform.eel.tests.iml b/platform/eel/intellij.platform.eel.tests.iml new file mode 100644 index 000000000000..d14f4f913982 --- /dev/null +++ b/platform/eel/intellij.platform.eel.tests.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentAbsolutePath.kt b/platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentAbsolutePath.kt similarity index 98% rename from platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentAbsolutePath.kt rename to platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentAbsolutePath.kt index 2ac6cbd20545..5d4bd9cbb945 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentAbsolutePath.kt +++ b/platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentAbsolutePath.kt @@ -1,8 +1,8 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.platform.ijent.fs +package com.intellij.platform.eel.path -import com.intellij.platform.ijent.fs.IjentPathResult.Err -import com.intellij.platform.ijent.fs.IjentPathResult.Ok +import com.intellij.platform.eel.path.IjentPathResult.Err +import com.intellij.platform.eel.path.IjentPathResult.Ok internal class ArrayListIjentAbsolutePath private constructor( private val _root: Root, diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentRelativePath.kt b/platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentRelativePath.kt similarity index 94% rename from platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentRelativePath.kt rename to platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentRelativePath.kt index ca4b79d3eb2e..9db260d780eb 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/ArrayListIjentRelativePath.kt +++ b/platform/eel/src/com/intellij/platform/eel/path/ArrayListIjentRelativePath.kt @@ -1,8 +1,5 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.platform.ijent.fs - -import com.intellij.util.SmartList -import com.intellij.util.asSafely +package com.intellij.platform.eel.path internal class ArrayListIjentRelativePath private constructor( private val parts: List, @@ -28,7 +25,7 @@ internal class ArrayListIjentRelativePath private constructor( } override fun resolve(other: IjentPath.Relative): IjentPathResult { - val result = SmartList() + val result = mutableListOf() result += parts if (other != EMPTY) { for (i in 0..() + val result = mutableListOf() for (part in parts) { when (part) { "." -> Unit @@ -102,7 +99,7 @@ internal class ArrayListIjentRelativePath private constructor( override fun toString(): String = parts.joinToString("/") override fun equals(other: Any?): Boolean = - other?.asSafely()?.compareTo(this) == 0 + other is IjentPath.Relative && other.compareTo(this) == 0 override fun hashCode(): Int = parts.hashCode() diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentPath.kt b/platform/eel/src/com/intellij/platform/eel/path/IjentPath.kt similarity index 98% rename from platform/ijent/src/com/intellij/platform/ijent/fs/IjentPath.kt rename to platform/eel/src/com/intellij/platform/eel/path/IjentPath.kt index a814b2c1886c..034708322dbf 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentPath.kt +++ b/platform/eel/src/com/intellij/platform/eel/path/IjentPath.kt @@ -1,9 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.platform.ijent.fs +package com.intellij.platform.eel.path import com.intellij.platform.eel.EelPlatform -import com.intellij.platform.ijent.fs.IjentPath.Absolute.OS +import com.intellij.platform.eel.path.IjentPath.Absolute.OS import java.nio.file.InvalidPathException +import kotlin.Throws sealed interface IjentPathResult

{ data class Ok

(val path: P) : IjentPathResult

diff --git a/platform/eel/src/com/intellij/platform/eel/path/package-info.java b/platform/eel/src/com/intellij/platform/eel/path/package-info.java new file mode 100644 index 000000000000..9145e1548f98 --- /dev/null +++ b/platform/eel/src/com/intellij/platform/eel/path/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.platform.eel.path; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentAbsolutePathTest.kt b/platform/eel/tests/com/intellij/platform/eel/path/IjentAbsolutePathTest.kt similarity index 84% rename from platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentAbsolutePathTest.kt rename to platform/eel/tests/com/intellij/platform/eel/path/IjentAbsolutePathTest.kt index 77c6134b5f89..74068cba0342 100644 --- a/platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentAbsolutePathTest.kt +++ b/platform/eel/tests/com/intellij/platform/eel/path/IjentAbsolutePathTest.kt @@ -1,8 +1,6 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.platform.ijent.community.impl.nio +package com.intellij.platform.eel.path -import com.intellij.platform.ijent.fs.IjentPath -import com.intellij.platform.ijent.fs.IjentPathResult import io.kotest.matchers.shouldBe import io.kotest.matchers.types.shouldBeTypeOf import org.junit.jupiter.api.DynamicTest @@ -36,11 +34,11 @@ class IjentAbsolutePathTest { for (rawPath in (unixPaths + windowsPaths)) { add(dynamicTest(rawPath) { - val ijentPath = IjentPath.Absolute + val eelPath = IjentPath.Absolute .parse(rawPath, null) .shouldBeTypeOf>() .path - ijentPath.toString() shouldBe rawPath + eelPath.toString() shouldBe rawPath }) } } diff --git a/platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentRelativePathTest.kt b/platform/eel/tests/com/intellij/platform/eel/path/IjentRelativePathTest.kt similarity index 94% rename from platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentRelativePathTest.kt rename to platform/eel/tests/com/intellij/platform/eel/path/IjentRelativePathTest.kt index 3d1a140f1c6f..2aebf4ce1af0 100644 --- a/platform/ijent/impl/tests/com/intellij/platform/ijent/community/impl/nio/IjentRelativePathTest.kt +++ b/platform/eel/tests/com/intellij/platform/eel/path/IjentRelativePathTest.kt @@ -1,8 +1,6 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.platform.ijent.community.impl.nio +package com.intellij.platform.eel.path -import com.intellij.platform.ijent.fs.IjentPath -import com.intellij.platform.ijent.fs.getOrThrow import io.kotest.assertions.throwables.shouldThrowAny import io.kotest.assertions.withClue import io.kotest.matchers.be diff --git a/platform/ijent/impl/intellij.platform.ijent.community.impl.iml b/platform/ijent/impl/intellij.platform.ijent.community.impl.iml index c5fb9e6e10b6..adad3a4bb588 100644 --- a/platform/ijent/impl/intellij.platform.ijent.community.impl.iml +++ b/platform/ijent/impl/intellij.platform.ijent.community.impl.iml @@ -5,7 +5,6 @@ - diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt index e8c5138e8de6..5a659a138320 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.community.impl +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.IjentApi import com.intellij.platform.ijent.IjentPosixApi import com.intellij.platform.ijent.IjentPosixInfo diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFsResultImpl.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFsResultImpl.kt index fe845d282dee..8e749bbf59a9 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFsResultImpl.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFsResultImpl.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.community.impl +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.fs.* @Suppress("unused") // Usages are to be implemented later. diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentPosixFileInfoImpl.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentPosixFileInfoImpl.kt index 9e16e1521690..b799ae6ef310 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentPosixFileInfoImpl.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentPosixFileInfoImpl.kt @@ -1,8 +1,8 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.community.impl +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.fs.IjentFileInfo -import com.intellij.platform.ijent.fs.IjentPath import com.intellij.platform.ijent.fs.IjentPosixFileInfo import java.time.ZonedDateTime diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileChannel.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileChannel.kt index 7b01328e9bc5..d25e002f8299 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileChannel.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileChannel.kt @@ -3,6 +3,7 @@ package com.intellij.platform.ijent.community.impl.nio import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.diagnostic.thisLogger +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.fs.* import com.intellij.platform.ijent.spi.RECOMMENDED_MAX_PACKET_SIZE import java.io.IOException 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 e6be3fb85071..ee202164416a 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 @@ -1,6 +1,8 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.community.impl.nio +import com.intellij.platform.eel.path.IjentPath +import com.intellij.platform.eel.path.getOrThrow import com.intellij.platform.ijent.fs.* import org.jetbrains.annotations.ApiStatus import java.net.URI 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 b13e49c839cc..86661a829d84 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 @@ -3,8 +3,9 @@ package com.intellij.platform.ijent.community.impl.nio import com.intellij.openapi.diagnostic.thisLogger import com.intellij.platform.core.nio.fs.BasicFileAttributesHolder2.FetchAttributesFilter +import com.intellij.platform.eel.path.IjentPath +import com.intellij.platform.eel.path.getOrThrow import com.intellij.platform.ijent.community.impl.IjentFsResultImpl -import com.intellij.platform.ijent.community.impl.nio.IjentNioFileSystemProvider.Companion.newFileSystemMap import com.intellij.platform.ijent.community.impl.nio.IjentNioFileSystemProvider.UnixFilePermissionBranch.* import com.intellij.platform.ijent.fs.* import com.intellij.platform.ijent.fs.IjentFileInfo.Type.* diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemUtil.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemUtil.kt index 8e400ff3ea04..63074d328c03 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemUtil.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioFileSystemUtil.kt @@ -3,6 +3,8 @@ package com.intellij.platform.ijent.community.impl.nio +import com.intellij.platform.eel.path.IjentPath +import com.intellij.platform.eel.path.getOrThrow import com.intellij.platform.ijent.fs.* import com.intellij.util.text.nullize import kotlinx.coroutines.Dispatchers diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioPath.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioPath.kt index afe1ed839564..e63495e4ba68 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioPath.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/nio/IjentNioPath.kt @@ -2,10 +2,10 @@ package com.intellij.platform.ijent.community.impl.nio import com.intellij.platform.core.nio.fs.BasicFileAttributesHolder2 +import com.intellij.platform.eel.path.IjentPath +import com.intellij.platform.eel.path.getOrThrow import com.intellij.platform.ijent.fs.IjentFileSystemPosixApi import com.intellij.platform.ijent.fs.IjentFileSystemWindowsApi -import com.intellij.platform.ijent.fs.IjentPath -import com.intellij.platform.ijent.fs.getOrThrow import java.net.URI import java.nio.file.* import java.nio.file.attribute.BasicFileAttributes diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileInfo.kt b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileInfo.kt index c8be3687806c..513bcd2fe35d 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileInfo.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileInfo.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.fs +import com.intellij.platform.eel.path.IjentPath import java.time.ZonedDateTime sealed interface IjentFileInfo { diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApi.kt b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApi.kt index 93fad984690d..2ffcf5854842 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApi.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApi.kt @@ -2,6 +2,7 @@ package com.intellij.platform.ijent.fs import com.intellij.openapi.util.NlsSafe +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.IjentInfo import com.intellij.platform.ijent.IjentPosixInfo import com.intellij.platform.ijent.IjentUnavailableException diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApiArgumentBuildersImpl.kt b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApiArgumentBuildersImpl.kt index 120c5f78a4c2..d4998ea5daae 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApiArgumentBuildersImpl.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFileSystemApiArgumentBuildersImpl.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.ijent.fs +import com.intellij.platform.eel.path.IjentPath import com.intellij.platform.ijent.fs.IjentFileSystemApi.CopyOptions import com.intellij.platform.ijent.fs.IjentFileSystemApi.FileWriterCreationMode diff --git a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFsResult.kt b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFsResult.kt index ff81be7d45b9..614ac0f7402b 100644 --- a/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFsResult.kt +++ b/platform/ijent/src/com/intellij/platform/ijent/fs/IjentFsResult.kt @@ -2,6 +2,7 @@ package com.intellij.platform.ijent.fs import com.intellij.openapi.util.NlsSafe +import com.intellij.platform.eel.path.IjentPath import org.jetbrains.annotations.Nls import java.io.IOException