From 326f93307b23221b5092ce92b2e889818c60dfed Mon Sep 17 00:00:00 2001 From: Dmitry Lyubin Date: Thu, 20 Feb 2025 15:07:04 +0400 Subject: [PATCH] OPENIDE added Axiom vendor and fixed Axiom long title issue, fixed position of the Axiom JDK in the JDK Download dialog (cherry picked from commit 53976367e892bd448683658c128aaf275f2d8b7f) (cherry picked from commit 8bcbc8287c36a3bf42e26a849802fad9bd6f031f) (cherry picked from commit fd44cc164fbe735d3097c587c33ac1181d6487ab) (cherry picked from commit 49f4341158ebe3812f53322d3cd8178fcb15f6d5) (cherry picked from commit 4f71dd7c5dd885a6f7dcbfd953d89577e193ffb7) --- .../impl/SdkmanrcConfigurationProvider.kt | 1 + .../impl/ToolVersionsConfigurationProvider.kt | 1 + .../jps/model/java/JdkVersionDetector.java | 1 + .../model/java/impl/JdkVersionDetectorImpl.java | 2 ++ .../jetbrains/jps/model/JdkVariantDetectorTest.kt | 14 ++++++++++++++ .../impl/jdkDownloader/JdkDownloadDialog.kt | 4 ++-- .../projectRoots/impl/jdkDownloader/JdkList.kt | 3 ++- 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/SdkmanrcConfigurationProvider.kt b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/SdkmanrcConfigurationProvider.kt index 3522e828ea84..be3fc0e5d140 100644 --- a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/SdkmanrcConfigurationProvider.kt +++ b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/SdkmanrcConfigurationProvider.kt @@ -49,6 +49,7 @@ public data class SdkmanReleaseData(val target: String, override val javaVersion: JavaVersion? = JavaVersion.tryParse(version) override val variant: JdkVersionDetector.Variant = when (vendor) { + "axiom" -> JdkVersionDetector.Variant.Axiom "adpt" if flavour == "hs" -> JdkVersionDetector.Variant.AdoptOpenJdk_HS "adpt" if flavour == "j9" -> JdkVersionDetector.Variant.AdoptOpenJdk_J9 "albba" -> JdkVersionDetector.Variant.Dragonwell diff --git a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt index eeb8e5e5c31f..ead5b1f00ad3 100644 --- a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt +++ b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt @@ -25,6 +25,7 @@ public data class AsdfReleaseData(val name: String, val vendor: String, val vers override val javaVersion: JavaVersion? = JavaVersion.tryParse(version) override val variant: JdkVersionDetector.Variant = when (vendor) { + "axiom" -> JdkVersionDetector.Variant.Axiom "adoptopenjdk", "adoptopenjdk-jre" -> JdkVersionDetector.Variant.AdoptOpenJdk_HS "adoptopenjdk-jre-openj9", "adoptopenjdk-jre-openj9-large_heap", "adoptopenjdk-openj9", "adoptopenjdk-openj9-large_heap" -> JdkVersionDetector.Variant.AdoptOpenJdk_J9 diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/JdkVersionDetector.java b/jps/model-api/src/org/jetbrains/jps/model/java/JdkVersionDetector.java index f5e2c0b0209b..a6f15453de8b 100644 --- a/jps/model-api/src/org/jetbrains/jps/model/java/JdkVersionDetector.java +++ b/jps/model-api/src/org/jetbrains/jps/model/java/JdkVersionDetector.java @@ -29,6 +29,7 @@ public abstract class JdkVersionDetector { @SuppressWarnings("SpellCheckingInspection") public enum Variant { + Axiom("axiom", "Axiom JDK"), AdoptOpenJdk_HS("adopt", "AdoptOpenJDK (HotSpot)"), AdoptOpenJdk_J9("adopt-j9", "AdoptOpenJDK (OpenJ9)"), BiSheng("bisheng", "BiSheng JDK"), diff --git a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JdkVersionDetectorImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JdkVersionDetectorImpl.java index f18773058bcc..d56d4143d040 100644 --- a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JdkVersionDetectorImpl.java +++ b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JdkVersionDetectorImpl.java @@ -155,6 +155,7 @@ public class JdkVersionDetectorImpl extends JdkVersionDetector { private static @Nullable Variant detectVariant(Properties p) { String implementorVersion = unquoteProperty(p, "IMPLEMENTOR_VERSION"); if (implementorVersion != null) { + if (implementorVersion.startsWith("Axiom")) return Variant.Axiom; if (implementorVersion.startsWith("AdoptOpenJDK")) { String variant = unquoteProperty(p, "JVM_VARIANT"); return "OpenJ9".equalsIgnoreCase(variant) ? Variant.AdoptOpenJdk_J9 : Variant.AdoptOpenJdk_HS; @@ -188,6 +189,7 @@ public class JdkVersionDetectorImpl extends JdkVersionDetector { } private static @Nullable Variant detectVendor(String implementor) { + if (implementor.startsWith("Axiom")) return Variant.Axiom; if (implementor.startsWith("Alibaba")) return Variant.Dragonwell; if (implementor.startsWith("Amazon")) return Variant.Corretto; if (implementor.startsWith("Azul")) return Variant.Zulu; diff --git a/jps/model-impl/testSrc/org/jetbrains/jps/model/JdkVariantDetectorTest.kt b/jps/model-impl/testSrc/org/jetbrains/jps/model/JdkVariantDetectorTest.kt index 16152c10de94..e3af6f4fb218 100644 --- a/jps/model-impl/testSrc/org/jetbrains/jps/model/JdkVariantDetectorTest.kt +++ b/jps/model-impl/testSrc/org/jetbrains/jps/model/JdkVariantDetectorTest.kt @@ -398,8 +398,22 @@ class JdkVariantDetectorTest { |MODULES="java.base ..." """.trimMargin() + private val RELEASE_AXIOM_JDK_23_0_2 = + """ + |IMPLEMENTOR="Axiom JSC" + |JAVA_RUNTIME_VERSION="23.0.2+9" + |JAVA_VERSION="23.0.2" + |JAVA_VERSION_DATE="2025-01-21" + |LIBC="default" + |MODULES="java.base ..." + |OS_ARCH="x86_64" + |OS_NAME="Windows" + |SOURCE=".:git:8d70ee331792+" + """.trimMargin() + @Rule @JvmField val tempDir = TempDirectory() + @Test fun `AxiomJDK 23`() = assertVariant(Axiom, RELEASE_AXIOM_JDK_23_0_2) @Test fun `Oracle OpenJDK 8`() = assertVariant(Unknown, RELEASE_ORACLE_OPEN_1_8_0_41, MANIFEST_ORACLE_OPEN_1_8_0_41) // no vendor info @Test fun `Oracle Commercial 8`() = assertVariant(Oracle, RELEASE_ORACLE_1_8_0_291, MANIFEST_ORACLE_1_8_0_291) @Test fun `Oracle 16`() = assertVariant(Oracle, RELEASE_ORACLE_16_0_1) diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt index b27a6496457f..08a9f2386eb9 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt @@ -113,7 +113,7 @@ private class JdkVersionVendorCombobox : ComboBox() { isSwingPopup = false renderer = listCellRenderer("") { - val title = value.item.product.packagePresentationText.replace("Axiom JSC", "").trim() + val title = value.item.product.packagePresentationText val style = if (isLicenseAcceptedJDK(value)) SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES else SimpleTextAttributes.REGULAR_ATTRIBUTES text(title) { this.attributes = style @@ -144,7 +144,7 @@ private fun List.sortedForUI() = this Comparator { i1, i2 -> val s1: String = i1.item.product.packagePresentationText val s2: String = i2.item.product.packagePresentationText - if (s1.contains("Axiom", ignoreCase = true)) -1 + if (s2.contains("Axiom", ignoreCase = true)) 1 else s1.compareTo(s2) } ) diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt index 00ec694cbf64..1a5bc00c6ac6 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt @@ -76,7 +76,7 @@ data class JdkProduct( append(flavour) append(")") } - } + }.replace("Axiom JSC", "").trim() } /** describes an item behind the version as well as download info **/ @@ -217,6 +217,7 @@ data class JdkItem( companion object { fun detectVariant(vendorText: @NlsSafe String): JdkVersionDetector.Variant { + if (vendorText.contains("Axiom")) return JdkVersionDetector.Variant.Axiom if (vendorText.contains("Oracle OpenJDK")) return JdkVersionDetector.Variant.Oracle if (vendorText.contains("Microsoft")) return JdkVersionDetector.Variant.Microsoft if (vendorText.contains("Corretto")) return JdkVersionDetector.Variant.Corretto