[kotlin] Move url with Kotlin versions to a registry key

KTIJ-26027

Merge-request: IJ-MR-119645
Merged-by: Victoria Petrakovich <Victoria.Petrakovich@jetbrains.com>

GitOrigin-RevId: 463786432eaf5093f8ce21a92165f00fd1e8280c
This commit is contained in:
Victoria.Petrakovich
2024-01-15 16:57:41 +00:00
committed by intellij-monorepo-bot
parent 3b88833e31
commit 79aa68995f
5 changed files with 26 additions and 8 deletions

View File

@@ -4,4 +4,12 @@
<add-to-group group-id="KotlinToolsGroup"/>
</action>
</actions>
<extensions defaultExtensionNs="com.intellij">
<registryKey
key="repo.with.kotlin.versions.url"
description="URL of a JSON file with Kotlin versions"
defaultValue="https://search.maven.org/solrsearch/select?q=g:%22org.jetbrains.kotlin%22+AND+a:%22kotlin-stdlib%22&amp;core=gav&amp;rows=20&amp;wt=json"
restartRequired="false"/>
</extensions>
</idea-plugin>

View File

@@ -40,5 +40,6 @@
<orderEntry type="module" module-name="intellij.platform.diff.impl" />
<orderEntry type="module" module-name="intellij.platform.core" />
<orderEntry type="module" module-name="intellij.platform.util.coroutines" />
<orderEntry type="module" module-name="intellij.platform.util" />
</component>
</module>

View File

@@ -62,9 +62,7 @@ automatic.library.version.update.for.maven.and.gradle.projects.is.currently.unsu
update.kotlin.runtime.library=Update Kotlin Runtime Library
configure.kotlin.title=Configure Kotlin with {0}
configure.kotlin.find.maven.versions=Find Kotlin Maven plugin versions
configure.kotlin.loading=loading\u2026
configure.kotlin.cant.load.versions=Couldn't load versions list from search.maven.org
configure.kotlin.cant.load.versions=Couldn't load Kotlin versions list
configure.kotlin.root.contains.another.kotlin=Your top-level build script contains Kotlin {0}.<br>
configure.kotlin.root.should.contain.same.version=The top-level and modules' build scripts should contain the same version.<br>

View File

@@ -5,14 +5,17 @@ import com.google.common.io.Closeables
import com.google.gson.JsonParser
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.module.Module
import com.intellij.openapi.observable.properties.AtomicProperty
import com.intellij.openapi.observable.util.transform
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.util.registry.Registry
import com.intellij.ui.dsl.builder.AlignX
import com.intellij.ui.dsl.builder.bindText
import com.intellij.ui.dsl.builder.panel
import com.intellij.util.io.HttpRequests
import com.intellij.util.net.HttpConfigurable
import com.intellij.util.text.VersionComparatorUtil
import org.jetbrains.kotlin.idea.compiler.configuration.IdeKotlinVersion
@@ -204,12 +207,12 @@ class ConfigureDialogWithModulesAndVersion(
}
companion object {
private val LOG = Logger.getInstance(ConfigureDialogWithModulesAndVersion::class.java)
private const val MODULES_TO_DISPLAY_SIZE = 2
internal const val DEFAULT_KOTLIN_VERSION = "1.8.22"
private const val VERSIONS_LIST_URL =
"https://search.maven.org/solrsearch/select?q=g:%22org.jetbrains.kotlin%22+AND+a:%22kotlin-stdlib%22&core=gav&rows=20&wt=json"
internal const val DEFAULT_KOTLIN_VERSION = "1.9.22"
@Throws(IOException::class)
@JvmStatic
@@ -232,7 +235,8 @@ class ConfigureDialogWithModulesAndVersion(
eapConnection.disconnect()
}
}
val urlConnection = HttpConfigurable.getInstance().openHttpConnection(VERSIONS_LIST_URL)
val url = Registry.stringValue("repo.with.kotlin.versions.url")
val urlConnection = HttpConfigurable.getInstance().openHttpConnection(url)
try {
val timeout = TimeUnit.SECONDS.toMillis(30).toInt()
urlConnection.setConnectTimeout(timeout)
@@ -251,6 +255,12 @@ class ConfigureDialogWithModulesAndVersion(
} finally {
Closeables.closeQuietly(streamReader)
}
} catch (e: HttpRequests.HttpStatusException) {
LOG.warn("Cannot load data from ${url} (statusCode=${e.statusCode})", e)
throw e
} catch (e: Exception) {
LOG.warn("Error parsing Kotlin versions JSON data: ${e} (URL=${url})", e)
throw e
} finally {
urlConnection.disconnect()
}

View File

@@ -15,6 +15,7 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogPanel
import com.intellij.openapi.util.Disposer
import com.intellij.platform.util.coroutines.namedChildScope
import com.intellij.openapi.util.registry.Registry
import com.intellij.ui.dsl.builder.*
import com.intellij.ui.dsl.gridLayout.UnscaledGaps
import com.intellij.uiDesigner.core.Spacer