From c899faac37c0cd03e371f27c4665c0e33b10ba62 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 15 Apr 2024 09:16:54 +0200 Subject: [PATCH] IJPL-1030 Bundle ktor-client into platform as a product module GitOrigin-RevId: 6928749d38e934d6a308cb898842cd8356e4a7ff --- .idea/libraries/ktor_client_cio.xml | 12 ++++- .../ktor_client_content_negotiation.xml | 52 +------------------ .idea/libraries/ktor_client_logging.xml | 52 +------------------ .../ktor_serialization_kotlinx_json.xml | 37 +++---------- .idea/modules.xml | 1 + .../intellij.libraries.ktor.client.iml | 34 ++++++++++++ .../intellij.libraries.ktor.client.xml | 3 ++ .../intellij.platform.buildScripts.iml | 1 + .../build/CommunityLibraryLicenses.kt | 2 +- .../intellij/build/impl/JarPackager.kt | 9 +++- .../intellij/build/impl/PlatformModules.kt | 6 --- .../src/META-INF/essential-modules.xml | 1 + .../util/http/intellij.platform.util.http.iml | 2 +- platform/util/http/src/client.kt | 4 +- .../package-search/intellij.packageSearch.iml | 1 - .../intellij.repository.search.iml | 4 +- .../api/PackageSearchApiClient.kt | 12 ++--- .../src/main/resources/META-INF/plugin.xml | 7 ++- 18 files changed, 82 insertions(+), 158 deletions(-) create mode 100644 libraries/ktor-client/intellij.libraries.ktor.client.iml create mode 100644 libraries/ktor-client/resources/intellij.libraries.ktor.client.xml diff --git a/.idea/libraries/ktor_client_cio.xml b/.idea/libraries/ktor_client_cio.xml index 5b640d1db3ab..6aa05ff39a7c 100644 --- a/.idea/libraries/ktor_client_cio.xml +++ b/.idea/libraries/ktor_client_cio.xml @@ -14,6 +14,12 @@ ed5e0657a1ed5857d12717f1df20fa22bf00ddb88ae9d2558de4ed51d7f4151e + + f66f962638b9c6a71b3f0ce71dc2e0b2066cd6092df5fb06591a2fe5764913f5 + + + 7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a + ba4bbc9b86ba9ff09a106e6a96e9cb559c5e1a9f092abbd82bab1a1345544f45 @@ -39,9 +45,7 @@ - - @@ -50,6 +54,8 @@ + + @@ -63,6 +69,8 @@ + + diff --git a/.idea/libraries/ktor_client_content_negotiation.xml b/.idea/libraries/ktor_client_content_negotiation.xml index ca4584b9e5a6..ce44a047ac25 100644 --- a/.idea/libraries/ktor_client_content_negotiation.xml +++ b/.idea/libraries/ktor_client_content_negotiation.xml @@ -1,68 +1,18 @@ - + b4c4b30af8e851c992b18470b3f1ecb8361922d465f5e75f1b2dff4979bda935 - - bc81ef5e0989abb3041242f296631c8d12e093ddcdb224cd6696d047fe921292 - - - 5d729636363fc35e220ac31dd0103633c8ab1af1264c07fbccd3f2c25b0bb318 - - - 1ce33e66d42d74828c2e09c75a8f68310023cdc0d2920db77dc0ddc37bea8628 - - - 4c33dd51a1d6d734c8c127cea96a1cfa024dc1d451ed1e2a86c297fa05f1dc29 - - - ed5e0657a1ed5857d12717f1df20fa22bf00ddb88ae9d2558de4ed51d7f4151e - - - f66f962638b9c6a71b3f0ce71dc2e0b2066cd6092df5fb06591a2fe5764913f5 - - - 7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a - - - 3ccc86a35b4301945ba20c8a7ef70e10911558525c3a28274aa36f32ffc2ade9 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/ktor_client_logging.xml b/.idea/libraries/ktor_client_logging.xml index 47f8fef91f8c..e87528f0e1ff 100644 --- a/.idea/libraries/ktor_client_logging.xml +++ b/.idea/libraries/ktor_client_logging.xml @@ -1,68 +1,18 @@ - + 72a53791d56febd909991132e8409c0abbfe96786c637b44465a5818d95d232a - - bc81ef5e0989abb3041242f296631c8d12e093ddcdb224cd6696d047fe921292 - - - 5d729636363fc35e220ac31dd0103633c8ab1af1264c07fbccd3f2c25b0bb318 - - - 1ce33e66d42d74828c2e09c75a8f68310023cdc0d2920db77dc0ddc37bea8628 - - - 4c33dd51a1d6d734c8c127cea96a1cfa024dc1d451ed1e2a86c297fa05f1dc29 - - - ed5e0657a1ed5857d12717f1df20fa22bf00ddb88ae9d2558de4ed51d7f4151e - - - f66f962638b9c6a71b3f0ce71dc2e0b2066cd6092df5fb06591a2fe5764913f5 - - - 7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a - - - 3ccc86a35b4301945ba20c8a7ef70e10911558525c3a28274aa36f32ffc2ade9 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/ktor_serialization_kotlinx_json.xml b/.idea/libraries/ktor_serialization_kotlinx_json.xml index a32730701f0b..41df5de6d979 100644 --- a/.idea/libraries/ktor_serialization_kotlinx_json.xml +++ b/.idea/libraries/ktor_serialization_kotlinx_json.xml @@ -5,56 +5,31 @@ b911a79263026ab81768ff2664a92586f192da108f5ba8b11e9172e5bb7a7ceb - - 5d729636363fc35e220ac31dd0103633c8ab1af1264c07fbccd3f2c25b0bb318 - - - 1ce33e66d42d74828c2e09c75a8f68310023cdc0d2920db77dc0ddc37bea8628 - - - 4c33dd51a1d6d734c8c127cea96a1cfa024dc1d451ed1e2a86c297fa05f1dc29 - 40a27f5347c8b737d7b8c2ef224d638a9e40d011aa9a56fb489b99ba9898d90d - - 7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a - - - 3ccc86a35b4301945ba20c8a7ef70e10911558525c3a28274aa36f32ffc2ade9 - - - - - - - + + + + + + - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index c09eeeb0c600..7bb6e2274278 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -857,6 +857,7 @@ + diff --git a/libraries/ktor-client/intellij.libraries.ktor.client.iml b/libraries/ktor-client/intellij.libraries.ktor.client.iml new file mode 100644 index 000000000000..194b219329f8 --- /dev/null +++ b/libraries/ktor-client/intellij.libraries.ktor.client.iml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + c17d8f1ac1d6bcfe3c164e9efd92aaeeab0cbedad54f4c269451fce38d4de3ef + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries/ktor-client/resources/intellij.libraries.ktor.client.xml b/libraries/ktor-client/resources/intellij.libraries.ktor.client.xml new file mode 100644 index 000000000000..2748ba9ef8ca --- /dev/null +++ b/libraries/ktor-client/resources/intellij.libraries.ktor.client.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/platform/build-scripts/intellij.platform.buildScripts.iml b/platform/build-scripts/intellij.platform.buildScripts.iml index bea028366691..f40f35f143b7 100644 --- a/platform/build-scripts/intellij.platform.buildScripts.iml +++ b/platform/build-scripts/intellij.platform.buildScripts.iml @@ -239,5 +239,6 @@ + \ No newline at end of file diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt index 15e073f24baa..4af103192d3b 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt @@ -792,7 +792,7 @@ object CommunityLibraryLicenses { url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), - LibraryLicense(libraryName = "ktor-client-jvm", + LibraryLicense(libraryName = "ktor-client-java-engine", url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt index f4e15290f7a0..b36aa7e6f323 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt @@ -32,7 +32,6 @@ import java.io.File import java.nio.ByteBuffer import java.nio.file.* import java.util.* -import kotlin.collections.LinkedHashSet import kotlin.io.path.invariantSeparatorsPathString import kotlin.io.path.readLines @@ -806,11 +805,19 @@ private fun getLibraryFiles( ): MutableList { val files = library.getPaths(JpsOrderRootType.COMPILED) val libName = library.name + if (libName == "ktor-client-jvm") { + return files + } // allow duplication if packed into the same target file and have the same common prefix files.removeIf { val alreadyCopiedFor = copiedFiles.get(it) ?: return@removeIf false val alreadyCopiedLibraryName = alreadyCopiedFor.library.name + + if (alreadyCopiedFor.library.name.startsWith("ktor-") && libName.startsWith("ktor-")) { + return@removeIf true + } + alreadyCopiedFor.targetFile == targetFile && (alreadyCopiedLibraryName.startsWith("ktor-") || alreadyCopiedLibraryName.startsWith("commons-") || diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt index b8c436269b6a..7bf19edba66d 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt @@ -207,12 +207,6 @@ internal suspend fun createPlatformLayout(addPlatformCoverage: Boolean, // Space plugin uses it and bundles into IntelliJ IDEA, but not bundles into DataGrip, so, or Space plugin should bundle this lib, // or IJ Platform. As it is a small library and consistency is important across other coroutine libs, bundle to IJ Platform. layout.withProjectLibrary(libraryName = "kotlinx-coroutines-slf4j", jarName = APP_JAR) - // make sure that all ktor libraries bundled into the platform - layout.withProjectLibraries(listOf( - "ktor-client-content-negotiation", - "ktor-client-logging", - "ktor-serialization-kotlinx-json", - )) // https://jetbrains.team/p/ij/reviews/67104/timeline // https://youtrack.jetbrains.com/issue/IDEA-179784 diff --git a/platform/platform-resources/src/META-INF/essential-modules.xml b/platform/platform-resources/src/META-INF/essential-modules.xml index fed00e812f6b..24e441026572 100644 --- a/platform/platform-resources/src/META-INF/essential-modules.xml +++ b/platform/platform-resources/src/META-INF/essential-modules.xml @@ -1,6 +1,7 @@ + diff --git a/platform/util/http/intellij.platform.util.http.iml b/platform/util/http/intellij.platform.util.http.iml index 7bb6b1b77b66..b69bacdda38d 100644 --- a/platform/util/http/intellij.platform.util.http.iml +++ b/platform/util/http/intellij.platform.util.http.iml @@ -25,7 +25,7 @@ - + \ No newline at end of file diff --git a/platform/util/http/src/client.kt b/platform/util/http/src/client.kt index 3e1500e24b6a..4962d4f59b05 100644 --- a/platform/util/http/src/client.kt +++ b/platform/util/http/src/client.kt @@ -17,9 +17,7 @@ import org.jetbrains.annotations.ApiStatus import java.io.InputStream import java.io.OutputStream -@get:ApiStatus.Internal -@get:ApiStatus.Experimental -val httpClient: HttpClient by lazy { +private val httpClient: HttpClient by lazy { // HttpTimeout is not used - CIO engine handles that HttpClient(CIO) { expectSuccess = true diff --git a/plugins/package-search/intellij.packageSearch.iml b/plugins/package-search/intellij.packageSearch.iml index adda5f205822..d75dd009216e 100644 --- a/plugins/package-search/intellij.packageSearch.iml +++ b/plugins/package-search/intellij.packageSearch.iml @@ -65,7 +65,6 @@ - diff --git a/plugins/repository-search/intellij.repository.search.iml b/plugins/repository-search/intellij.repository.search.iml index e92eeebfa48e..d434c2c7c73a 100644 --- a/plugins/repository-search/intellij.repository.search.iml +++ b/plugins/repository-search/intellij.repository.search.iml @@ -45,12 +45,10 @@ - - - + \ No newline at end of file diff --git a/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/PackageSearchApiClient.kt b/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/PackageSearchApiClient.kt index a5bce2566c93..1a118e1b6468 100644 --- a/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/PackageSearchApiClient.kt +++ b/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/PackageSearchApiClient.kt @@ -20,7 +20,7 @@ import com.intellij.openapi.components.service import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.engine.cio.CIO +import io.ktor.client.engine.java.Java import io.ktor.client.plugins.* import io.ktor.client.plugins.cache.HttpCache import io.ktor.client.plugins.contentnegotiation.ContentNegotiation @@ -31,7 +31,6 @@ import io.ktor.client.statement.request import io.ktor.http.* import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import org.jetbrains.idea.packagesearch.DefaultPackageServiceConfig import org.jetbrains.idea.packagesearch.HashingAlgorithm @@ -45,11 +44,12 @@ import org.jetbrains.packagesearch.api.v2.ApiRepositoriesResponse import org.jetbrains.packagesearch.api.v2.ApiStandardPackage import java.io.Closeable - -class PackageSearchApiClient( +class PackageSearchApiClient internal constructor( private val config: PackageSearchServiceConfig = service(), - engine: HttpClientEngine? = null, + engine: HttpClientEngine?, ) : Closeable { + // do not expose HttpClientEngine + constructor() : this(engine = null) data class ApiException(val serverMessage: String, val endpoint: String, val statusCode: HttpStatusCode) : Throwable() { override val message: String @@ -104,7 +104,7 @@ class PackageSearchApiClient( if (config.useCache) install(HttpCache) } - private val httpClient = if (engine != null) HttpClient(engine, clientConfig) else HttpClient(CIO, clientConfig) + private val httpClient = if (engine != null) HttpClient(engine, clientConfig) else HttpClient(Java, clientConfig) private val maxRequestResultsCount = 25 private val maxMavenCoordinatesParts = 3 diff --git a/plugins/repository-search/src/main/resources/META-INF/plugin.xml b/plugins/repository-search/src/main/resources/META-INF/plugin.xml index 0aa0d19230ed..4c89ad298959 100644 --- a/plugins/repository-search/src/main/resources/META-INF/plugin.xml +++ b/plugins/repository-search/src/main/resources/META-INF/plugin.xml @@ -7,7 +7,12 @@ Technical plugin, provides API for artifacts search ]]> - org.jetbrains.idea.maven.model + + + + + +