diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java index 72b4763f9045..4f785d25e1de 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java @@ -26,6 +26,7 @@ import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.ex.ApplicationInfoEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Version; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.BrowserHyperlinkListener; import com.intellij.ui.JBColor; @@ -238,9 +239,11 @@ class UpdateInfoDialog extends AbstractUpdateDialog { configureMessageArea(myLicenseArea, myLicenseInfo, myPaidUpgrade ? JBColor.RED : null, null); } } + } - protected String formatVersion(String version, String build) { - return IdeBundle.message("updates.version.info", StringUtil.formatVersionToMajorMinorPatchString(version), build); - } + protected static String formatVersion(String versionString, String build) { + Version version = Version.parseVersion(versionString); + String formattedVersion = version != null ? version.toString() : versionString; + return IdeBundle.message("updates.version.info", formattedVersion, build); } } diff --git a/platform/util/src/com/intellij/openapi/util/Version.java b/platform/util/src/com/intellij/openapi/util/Version.java index e33be766d9da..6d73fd98c54c 100644 --- a/platform/util/src/com/intellij/openapi/util/Version.java +++ b/platform/util/src/com/intellij/openapi/util/Version.java @@ -1,5 +1,6 @@ package com.intellij.openapi.util; +import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,6 +15,28 @@ public class Version { this.major = major; } + @Nullable + public static Version parseVersion(@NotNull String versionString) { + String[] versions = versionString.split("\\."); + String version = versions[0]; + int major = StringUtil.parseInt(version, -1); + if (major < 0) { + return null; + } + + int minor = (versions.length > 1) ? StringUtil.parseInt(versions[1], -1) : 0; + if (minor < 0) { + return null; + } + + int patch = (versions.length > 2) ? StringUtil.parseInt(versions[2], -1) : 0; + if (patch < 0) { + return null; + } + + return new Version(major, minor, patch); + } + public boolean is(@Nullable Integer major) { return is(major, null); } diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index b4461ee62542..9e347826acac 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -2390,19 +2390,6 @@ public class StringUtil extends StringUtilRt { return packageName + '.' + className; } - @Contract(pure = true) - public static String formatVersionToMajorMinorPatchString(String version) { - if (version.matches("(\\d+\\.)*\\d+")) { - String[] parts = version.split("\\.", 3); - String major = parts.length > 0 ? parts[0] : "0"; - String minor = parts.length > 1 ? parts[1] : "0"; - String patch = parts.length > 2 ? parts[2] : "0"; - version = major + '.' + minor + '.' + patch; - } - - return version; - } - @Contract(pure = true) public static int compareVersionNumbers(@Nullable String v1, @Nullable String v2) { // todo duplicates com.intellij.util.text.VersionComparatorUtil.compare diff --git a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java index e6049c804235..6af19a615746 100644 --- a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java @@ -424,17 +424,4 @@ public class StringUtilTest { assertEquals("Map", StringUtil.getPackageName("Map.Entry")); assertEquals("", StringUtil.getPackageName("Number")); } - - @Test - public void testFormatVersionToMajorMinorPatchString() { - assertEquals("15.0.0", StringUtil.formatVersionToMajorMinorPatchString("15")); - assertEquals("15.1.0", StringUtil.formatVersionToMajorMinorPatchString("15.1")); - assertEquals("15.1.3", StringUtil.formatVersionToMajorMinorPatchString("15.1.3")); - - assertEquals("15.1.3.25", StringUtil.formatVersionToMajorMinorPatchString("15.1.3.25")); - - assertEquals("15.1 EAP", StringUtil.formatVersionToMajorMinorPatchString("15.1 EAP")); - assertEquals("15 EAP", StringUtil.formatVersionToMajorMinorPatchString("15 EAP")); - - } }