build script downloader - switch to JDK engine as CIO doesn't support TLS 1.3

It leads to a duplicated ktor files in dist, but that is relatively ok

GitOrigin-RevId: 091579a4dae960415ad2ddbc2bbbfa92d75fbe65
This commit is contained in:
Vladimir Krivosheev
2024-07-08 08:04:25 +02:00
committed by intellij-monorepo-bot
parent ba29957133
commit 1faf780399
20 changed files with 155 additions and 57 deletions

53
.idea/libraries/ktor_client_java.xml generated Normal file
View File

@@ -0,0 +1,53 @@
<component name="libraryTable">
<library name="ktor-client-java" type="repository">
<properties maven-id="io.ktor:ktor-client-java-jvm:2.3.8">
<verification>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8.jar">
<sha256sum>c17d8f1ac1d6bcfe3c164e9efd92aaeeab0cbedad54f4c269451fce38d4de3ef</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-core-jvm/2.3.8/ktor-client-core-jvm-2.3.8.jar">
<sha256sum>bc81ef5e0989abb3041242f296631c8d12e093ddcdb224cd6696d047fe921292</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-http-jvm/2.3.8/ktor-http-jvm-2.3.8.jar">
<sha256sum>5d729636363fc35e220ac31dd0103633c8ab1af1264c07fbccd3f2c25b0bb318</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-utils-jvm/2.3.8/ktor-utils-jvm-2.3.8.jar">
<sha256sum>1ce33e66d42d74828c2e09c75a8f68310023cdc0d2920db77dc0ddc37bea8628</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-io-jvm/2.3.8/ktor-io-jvm-2.3.8.jar">
<sha256sum>4c33dd51a1d6d734c8c127cea96a1cfa024dc1d451ed1e2a86c297fa05f1dc29</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-events-jvm/2.3.8/ktor-events-jvm-2.3.8.jar">
<sha256sum>ed5e0657a1ed5857d12717f1df20fa22bf00ddb88ae9d2558de4ed51d7f4151e</sha256sum>
</artifact>
</verification>
<exclude>
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk7" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-jdk8" />
<dependency maven-id="org.slf4j:slf4j-api" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-common" />
<dependency maven-id="io.ktor:ktor-websocket-serialization-jvm" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-slf4j" />
</exclude>
</properties>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-core-jvm/2.3.8/ktor-client-core-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-http-jvm/2.3.8/ktor-http-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-utils-jvm/2.3.8/ktor-utils-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-io-jvm/2.3.8/ktor-io-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-events-jvm/2.3.8/ktor-events-jvm-2.3.8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-core-jvm/2.3.8/ktor-client-core-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-http-jvm/2.3.8/ktor-http-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-utils-jvm/2.3.8/ktor-utils-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-io-jvm/2.3.8/ktor-io-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-events-jvm/2.3.8/ktor-events-jvm-2.3.8-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -8,6 +8,9 @@
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-jvm/2.3.8/ktor-serialization-kotlinx-jvm-2.3.8.jar">
<sha256sum>40a27f5347c8b737d7b8c2ef224d638a9e40d011aa9a56fb489b99ba9898d90d</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-jvm/2.3.8/ktor-serialization-jvm-2.3.8.jar">
<sha256sum>7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a</sha256sum>
</artifact>
</verification>
<exclude>
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk7" />
@@ -16,20 +19,22 @@
<dependency maven-id="org.slf4j:slf4j-api" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm" />
<dependency maven-id="io.ktor:ktor-http-jvm" />
<dependency maven-id="io.ktor:ktor-serialization-jvm" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-serialization-core-jvm" />
<dependency maven-id="io.ktor:ktor-websockets-jvm" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-common" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-serialization-core-jvm" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-serialization-json-jvm" />
</exclude>
</properties>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-json-jvm/2.3.8/ktor-serialization-kotlinx-json-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-jvm/2.3.8/ktor-serialization-kotlinx-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-jvm/2.3.8/ktor-serialization-jvm-2.3.8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-json-jvm/2.3.8/ktor-serialization-kotlinx-json-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-jvm/2.3.8/ktor-serialization-kotlinx-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-serialization-jvm/2.3.8/ktor-serialization-jvm-2.3.8-sources.jar!/" />
</SOURCES>
</library>
</component>

1
.idea/modules.xml generated
View File

@@ -510,6 +510,7 @@
<module fileurl="file://$PROJECT_DIR$/libraries/grpc/intellij.libraries.grpc.iml" filepath="$PROJECT_DIR$/libraries/grpc/intellij.libraries.grpc.iml" />
<module fileurl="file://$PROJECT_DIR$/libraries/grpc-netty-shaded/intellij.libraries.grpc.netty.shaded.iml" filepath="$PROJECT_DIR$/libraries/grpc-netty-shaded/intellij.libraries.grpc.netty.shaded.iml" />
<module fileurl="file://$PROJECT_DIR$/libraries/ktor-client/intellij.libraries.ktor.client.iml" filepath="$PROJECT_DIR$/libraries/ktor-client/intellij.libraries.ktor.client.iml" />
<module fileurl="file://$PROJECT_DIR$/libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml" filepath="$PROJECT_DIR$/libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml" />
<module fileurl="file://$PROJECT_DIR$/libraries/microba/intellij.libraries.microba.iml" filepath="$PROJECT_DIR$/libraries/microba/intellij.libraries.microba.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/lombok/intellij.lombok.iml" filepath="$PROJECT_DIR$/plugins/lombok/intellij.lombok.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/lombok/generated/intellij.lombok.generated.iml" filepath="$PROJECT_DIR$/plugins/lombok/generated/intellij.lombok.generated.iml" />

View File

@@ -73,7 +73,6 @@
<orderEntry type="library" name="gson" level="project" />
<orderEntry type="library" name="ASM" level="project" />
<orderEntry type="module" module-name="intellij.platform.util.jdom" />
<orderEntry type="module" module-name="intellij.idea.community.build.dependencies" />
<orderEntry type="module" module-name="intellij.platform.buildScripts.downloader" />
<orderEntry type="module" module-name="intellij.platform.feedback" />
<orderEntry type="library" name="kotlinx-datetime-jvm" level="project" />

View File

@@ -33,7 +33,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.intellij.build.BuildDependenciesJps;
import org.jetbrains.intellij.build.dependencies.BuildDependenciesCommunityRoot;
import org.jetbrains.intellij.build.dependencies.BuildDependenciesConstants;
import java.io.File;
import java.io.FileOutputStream;
@@ -216,7 +215,7 @@ public class RemoteConnectionBuilder {
Path downloadedAgent = BuildDependenciesJps.getModuleLibrarySingleRoot(
iml,
"debugger-agent",
BuildDependenciesConstants.INTELLIJ_DEPENDENCIES_URL,
"https://cache-redirector.jetbrains.com/intellij-dependencies",
new BuildDependenciesCommunityRoot(Path.of(PathManager.getCommunityHomePath())));
Files.copy(downloadedAgent, agentArtifactPath);

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" exported="">
<library name="ktor-client-cio-internal" type="repository">
<properties maven-id="io.ktor:ktor-client-cio-jvm:2.3.8">
<verification>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-cio-jvm/2.3.8/ktor-client-cio-jvm-2.3.8.jar">
<sha256sum>7ad22d5e890bd478aa002b889de30c8281a855198d4906b66b8862531ac5898f</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-http-cio-jvm/2.3.8/ktor-http-cio-jvm-2.3.8.jar">
<sha256sum>ba4bbc9b86ba9ff09a106e6a96e9cb559c5e1a9f092abbd82bab1a1345544f45</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-network-jvm/2.3.8/ktor-network-jvm-2.3.8.jar">
<sha256sum>f076335b06e4758f2b3e318eb367007c8fddfc71a9766cdeca3e7b5fb9709f7a</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-websockets-jvm/2.3.8/ktor-websockets-jvm-2.3.8.jar">
<sha256sum>3ccc86a35b4301945ba20c8a7ef70e10911558525c3a28274aa36f32ffc2ade9</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-network-tls-jvm/2.3.8/ktor-network-tls-jvm-2.3.8.jar">
<sha256sum>aac910965317afb70024e4de01c65dc2150601513ffda30cc74049cd5435dc6f</sha256sum>
</artifact>
</verification>
<exclude>
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk7" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-jdk8" />
<dependency maven-id="org.slf4j:slf4j-api" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm" />
<dependency maven-id="io.ktor:ktor-client-core-jvm" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-common" />
<dependency maven-id="io.ktor:ktor-utils-jvm" />
<dependency maven-id="io.ktor:ktor-http-jvm" />
</exclude>
</properties>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-cio-jvm/2.3.8/ktor-client-cio-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-http-cio-jvm/2.3.8/ktor-http-cio-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-network-jvm/2.3.8/ktor-network-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-websockets-jvm/2.3.8/ktor-websockets-jvm-2.3.8.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-network-tls-jvm/2.3.8/ktor-network-tls-jvm-2.3.8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-cio-jvm/2.3.8/ktor-client-cio-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-http-cio-jvm/2.3.8/ktor-http-cio-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-network-jvm/2.3.8/ktor-network-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-websockets-jvm/2.3.8/ktor-websockets-jvm-2.3.8-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-network-tls-jvm/2.3.8/ktor-network-tls-jvm-2.3.8-sources.jar!/" />
</SOURCES>
</library>
</orderEntry>
<orderEntry type="module" module-name="intellij.libraries.ktor.client" exported="" />
</component>
</module>

View File

@@ -0,0 +1,6 @@
<!-- cannot use dependent-on-core="false" - kotlin stdlib is required -->
<idea-plugin>
<dependencies>
<module name="intellij.libraries.ktor.client"/>
</dependencies>
</idea-plugin>

View File

@@ -7,28 +7,10 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="ktor-client-cio" level="project" />
<orderEntry type="library" exported="" name="ktor-client-java" level="project" />
<orderEntry type="library" exported="" name="ktor-client-encoding" level="project" />
<orderEntry type="library" exported="" name="ktor-client-content-negotiation" level="project" />
<orderEntry type="library" exported="" name="ktor-serialization-kotlinx-json" level="project" />
<orderEntry type="module-library" exported="">
<library name="ktor-client-java-engine" type="repository">
<properties include-transitive-deps="false" maven-id="io.ktor:ktor-client-java-jvm:2.3.8">
<verification>
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8.jar">
<sha256sum>c17d8f1ac1d6bcfe3c164e9efd92aaeeab0cbedad54f4c269451fce38d4de3ef</sha256sum>
</artifact>
</verification>
</properties>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/2.3.8/ktor-client-java-jvm-2.3.8-sources.jar!/" />
</SOURCES>
</library>
</orderEntry>
<orderEntry type="library" exported="" name="ktor-client-auth" level="project" />
</component>
</module>

View File

@@ -31,11 +31,11 @@
<orderEntry type="library" name="commons-io" level="project" />
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="library" name="ktor-client-auth" level="project" />
<orderEntry type="library" name="ktor-client-cio" level="project" />
<orderEntry type="library" name="ktor-client-encoding" level="project" />
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
<orderEntry type="library" name="opentelemetry" level="project" />
<orderEntry type="library" name="opentelemetry-semconv" level="project" />
<orderEntry type="library" name="opentelemetry-extension-kotlin" level="project" />
<orderEntry type="library" name="ktor-client-java" level="project" />
</component>
</module>

View File

@@ -5,8 +5,9 @@ package org.jetbrains.intellij.build
import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig
import io.ktor.client.call.body
import io.ktor.client.engine.cio.CIO
import io.ktor.client.engine.java.Java
import io.ktor.client.plugins.HttpRequestRetry
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.UserAgent
import io.ktor.client.plugins.auth.Auth
import io.ktor.client.plugins.auth.providers.BasicAuthCredentials
@@ -55,11 +56,11 @@ const val SPACE_REPO_HOST: String = "packages.jetbrains.team"
private val httpClient = SynchronizedClearableLazy {
// HttpTimeout is not used - CIO engine handles that
HttpClient(CIO) {
HttpClient(Java) {
expectSuccess = true
engine {
requestTimeout = 2.hours.inWholeMilliseconds
install(HttpTimeout) {
requestTimeoutMillis = 2.hours.inWholeMilliseconds
}
install(ContentEncoding) {

View File

@@ -237,7 +237,7 @@
<orderEntry type="library" scope="RUNTIME" name="jackson-dataformat-yaml" level="project" />
<orderEntry type="library" name="ion" level="project" />
<orderEntry type="module" module-name="intellij.platform.boot" />
<orderEntry type="library" name="ktor-client-cio" level="project" />
<orderEntry type="module" module-name="intellij.platform.ijent.community.buildConstants" />
<orderEntry type="library" name="ktor-client-java" level="project" />
</component>
</module>

View File

@@ -702,8 +702,10 @@ object CommunityLibraryLicenses {
url = "https://github.com/ktorio/ktor")
.apache("https://github.com/ktorio/ktor/blob/main/LICENSE")
.suppliedByOrganizations(Suppliers.JETBRAINS),
LibraryLicense(libraryName = "ktor-client-cio",
url = "https://github.com/ktorio/ktor")
LibraryLicense(libraryName = "ktor-client-cio", url = "https://github.com/ktorio/ktor")
.apache("https://github.com/ktorio/ktor/blob/main/LICENSE")
.suppliedByOrganizations(Suppliers.JETBRAINS),
LibraryLicense(libraryName = "ktor-client-cio-internal", url = "https://github.com/ktorio/ktor")
.apache("https://github.com/ktorio/ktor/blob/main/LICENSE")
.suppliedByOrganizations(Suppliers.JETBRAINS),
LibraryLicense(libraryName = "ktor-client-content-negotiation",
@@ -714,7 +716,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-java-engine",
LibraryLicense(libraryName = "ktor-client-java",
url = "https://github.com/ktorio/ktor")
.apache("https://github.com/ktorio/ktor/blob/main/LICENSE")
.suppliedByOrganizations(Suppliers.JETBRAINS),

View File

@@ -86,6 +86,7 @@ object CommunityRepositoryModules {
spec.withModuleLibrary("RMI Stubs", "intellij.xslt.debugger.rt", "rmi-stubs.jar")
},
plugin("intellij.maven") { spec ->
spec.withModule("intellij.idea.community.build.dependencies")
spec.withModule("intellij.maven.jps")
spec.withModule("intellij.maven.server.m3.common", "maven3-server-common.jar")
spec.withModule("intellij.maven.server.m3.impl", "maven3-server.jar")

View File

@@ -5,7 +5,6 @@ package org.jetbrains.intellij.build
import com.intellij.util.xml.dom.XmlElement
import com.intellij.util.xml.dom.readXmlAsModel
import io.ktor.util.decodeString
import org.jetbrains.intellij.build.impl.ModuleItem
import org.jetbrains.intellij.build.impl.ModuleOutputPatcher
import org.jetbrains.intellij.build.impl.PluginLayout
@@ -17,7 +16,6 @@ import java.io.StringReader
import java.nio.file.Files
import java.nio.file.Path
import java.util.concurrent.ConcurrentHashMap
import kotlin.io.path.extension
// production-only - JpsJavaClasspathKind.PRODUCTION_RUNTIME
internal class JarPackagerDependencyHelper(private val context: BuildContext) {
@@ -37,9 +35,10 @@ internal class JarPackagerDependencyHelper(private val context: BuildContext) {
fun getPluginXmlContent(pluginModule: JpsModule): String {
val moduleOutput = context.getModuleOutputDir(pluginModule)
if (moduleOutput.extension == "jar") {
if (moduleOutput.toString().endsWith(".jar")) {
return getPluginXmlContentFromJar(moduleOutput)
}
val pluginXmlFile = moduleOutput.resolve("META-INF/plugin.xml")
try {
return Files.readString(pluginXmlFile)
@@ -53,7 +52,7 @@ internal class JarPackagerDependencyHelper(private val context: BuildContext) {
var pluginXmlContent: String? = null
readZipFile(moduleJar) { name, data ->
if (name == "META-INF/plugin.xml")
pluginXmlContent = data().decodeString()
pluginXmlContent = Charsets.UTF_8.decode(data()).toString()
}
return pluginXmlContent ?: throw IllegalStateException("META-INF/plugin.xml not found in ${moduleJar} module")

View File

@@ -71,8 +71,8 @@ private val PLATFORM_IMPLEMENTATION_MODULES = java.util.List.of(
"intellij.remoteDev.util",
"intellij.platform.feedback",
"intellij.platform.warmup",
"intellij.idea.community.build.dependencies",
"intellij.platform.usageView.impl",
"intellij.platform.buildScripts.downloader",
"intellij.platform.ml.impl",
"intellij.platform.runtime.product",

View File

@@ -52,7 +52,7 @@
</dependency>
<dependency>
<groupId>io.ktor</groupId>
<artifactId>ktor-client-cio-jvm</artifactId>
<artifactId>ktor-client-java-jvm</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>

View File

@@ -2,6 +2,7 @@
<content>
<module name="intellij.platform.settings.local"/>
<module name="intellij.libraries.ktor.client"/>
<module name="intellij.libraries.ktor.client.cio"/>
<module name="intellij.platform.kernel"/>
<module name="intellij.platform.kernel.backend"/>

View File

@@ -26,6 +26,6 @@
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
<orderEntry type="library" name="jetbrains-annotations" level="project" />
<orderEntry type="library" name="ktor-client-cio" level="project" />
<orderEntry type="library" name="ktor-client-java" level="project" />
</component>
</module>

View File

@@ -2,9 +2,9 @@
package com.intellij.platform.util.http
import io.ktor.client.HttpClient
import io.ktor.client.engine.cio.CIO
import io.ktor.client.engine.cio.endpoint
import io.ktor.client.engine.java.Java
import io.ktor.client.plugins.HttpRequestRetry
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.request.get
import io.ktor.client.request.head
import io.ktor.client.request.post
@@ -19,17 +19,15 @@ import java.io.OutputStream
private val httpClient: HttpClient by lazy {
// HttpTimeout is not used - CIO engine handles that
HttpClient(CIO) {
HttpClient(Java) {
expectSuccess = true
install(HttpRequestRetry) {
retryOnExceptionOrServerErrors(maxRetries = 3)
exponentialDelay()
}
engine {
endpoint {
connectTimeout = System.getProperty("idea.connection.timeout")?.toLongOrNull() ?: 10_000
}
install(HttpTimeout) {
connectTimeoutMillis = System.getProperty("idea.connection.timeout")?.toLongOrNull() ?: 10_000
}
}
}

View File

@@ -9,19 +9,9 @@ import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.request.get
import io.ktor.client.request.headers
import io.ktor.http.*
import io.ktor.serialization.ContentConverter
import io.ktor.serialization.kotlinx.KotlinxSerializationConverter
import io.ktor.util.StringValuesBuilder
import io.ktor.util.reflect.TypeInfo
import io.ktor.utils.io.ByteReadChannel
import io.ktor.utils.io.charsets.Charset
import io.ktor.utils.io.core.readText
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.nullable
import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.SerializersModule
import kotlinx.serialization.serializer
import kotlinx.serialization.serializerOrNull
import org.jetbrains.packagesearch.api.v2.ApiPackagesResponse
import org.jetbrains.packagesearch.api.v2.ApiStandardPackage
import kotlin.time.Duration