提交 9a146147 编写于 作者: O Oleg Nenashev

[JENKINS-55980] - Switch Java Specification Version comparison in the core to...

[JENKINS-55980] - Switch Java Specification Version comparison in the core to a robust implementation.

After the change all Java Specification Version comparison operations are robust against comparison of old and new Java spec version formats
See https://openjdk.java.net/jeps/223 for the new format
上级 adff3250
...@@ -63,7 +63,7 @@ THE SOFTWARE. ...@@ -63,7 +63,7 @@ THE SOFTWARE.
<dependency> <dependency>
<groupId>org.jenkins-ci</groupId> <groupId>org.jenkins-ci</groupId>
<artifactId>version-number</artifactId> <artifactId>version-number</artifactId>
<version>1.5</version> <version>1.6</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jenkins-ci</groupId> <groupId>org.jenkins-ci</groupId>
......
...@@ -33,6 +33,7 @@ import hudson.model.ModelObject; ...@@ -33,6 +33,7 @@ import hudson.model.ModelObject;
import hudson.model.UpdateCenter; import hudson.model.UpdateCenter;
import hudson.model.UpdateSite; import hudson.model.UpdateSite;
import hudson.util.VersionNumber; import hudson.util.VersionNumber;
import io.jenkins.lib.versionnumber.JavaSpecificationVersion;
import jenkins.YesNoMaybe; import jenkins.YesNoMaybe;
import jenkins.model.Jenkins; import jenkins.model.Jenkins;
import jenkins.util.java.JavaUtils; import jenkins.util.java.JavaUtils;
...@@ -763,8 +764,8 @@ public class PluginWrapper implements Comparable<PluginWrapper>, ModelObject { ...@@ -763,8 +764,8 @@ public class PluginWrapper implements Comparable<PluginWrapper>, ModelObject {
String minimumJavaVersion = getMinimumJavaVersion(); String minimumJavaVersion = getMinimumJavaVersion();
if (minimumJavaVersion != null) { if (minimumJavaVersion != null) {
VersionNumber actualVersion = JavaUtils.getCurrentJavaRuntimeVersionNumber(); JavaSpecificationVersion actualVersion = JavaUtils.getCurrentJavaRuntimeVersionNumber();
if (actualVersion.isOlderThan(new VersionNumber(minimumJavaVersion))) { if (actualVersion.isOlderThan(new JavaSpecificationVersion(minimumJavaVersion))) {
versionDependencyError(Messages.PluginWrapper_obsoleteJava(actualVersion.toString(), minimumJavaVersion), actualVersion.toString(), minimumJavaVersion); versionDependencyError(Messages.PluginWrapper_obsoleteJava(actualVersion.toString(), minimumJavaVersion), actualVersion.toString(), minimumJavaVersion);
} }
} }
......
...@@ -64,6 +64,7 @@ import javax.annotation.CheckForNull; ...@@ -64,6 +64,7 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import io.jenkins.lib.versionnumber.JavaSpecificationVersion;
import jenkins.model.Jenkins; import jenkins.model.Jenkins;
import jenkins.model.DownloadSettings; import jenkins.model.DownloadSettings;
import jenkins.plugins.DetachedPluginsUtil; import jenkins.plugins.DetachedPluginsUtil;
...@@ -1133,8 +1134,8 @@ public class UpdateSite { ...@@ -1133,8 +1134,8 @@ public class UpdateSite {
*/ */
public boolean isForNewerJava() { public boolean isForNewerJava() {
try { try {
final VersionNumber currentRuntimeJavaVersion = JavaUtils.getCurrentJavaRuntimeVersionNumber(); final JavaSpecificationVersion currentRuntimeJavaVersion = JavaUtils.getCurrentJavaRuntimeVersionNumber();
return minimumJavaVersion != null && new VersionNumber(minimumJavaVersion).isNewerThan( return minimumJavaVersion != null && new JavaSpecificationVersion(minimumJavaVersion).isNewerThan(
currentRuntimeJavaVersion); currentRuntimeJavaVersion);
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
logBadMinJavaVersion(); logBadMinJavaVersion();
......
...@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet; ...@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
import hudson.ClassicPluginStrategy; import hudson.ClassicPluginStrategy;
import hudson.PluginWrapper; import hudson.PluginWrapper;
import hudson.util.VersionNumber; import hudson.util.VersionNumber;
import io.jenkins.lib.versionnumber.JavaSpecificationVersion;
import jenkins.util.java.JavaUtils; import jenkins.util.java.JavaUtils;
import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.accmod.restrictions.NoExternalUse;
...@@ -174,13 +175,13 @@ public class DetachedPluginsUtil { ...@@ -174,13 +175,13 @@ public class DetachedPluginsUtil {
*/ */
private final VersionNumber splitWhen; private final VersionNumber splitWhen;
private final String requiredVersion; private final String requiredVersion;
private final VersionNumber minJavaVersion; private final JavaSpecificationVersion minJavaVersion;
private DetachedPlugin(String shortName, String splitWhen, String requiredVersion, String minJavaVersion) { private DetachedPlugin(String shortName, String splitWhen, String requiredVersion, String minJavaVersion) {
this.shortName = shortName; this.shortName = shortName;
this.splitWhen = new VersionNumber(splitWhen); this.splitWhen = new VersionNumber(splitWhen);
this.requiredVersion = requiredVersion; this.requiredVersion = requiredVersion;
this.minJavaVersion = new VersionNumber(minJavaVersion); this.minJavaVersion = new JavaSpecificationVersion(minJavaVersion);
} }
/** /**
...@@ -217,7 +218,7 @@ public class DetachedPluginsUtil { ...@@ -217,7 +218,7 @@ public class DetachedPluginsUtil {
} }
@Nonnull @Nonnull
public VersionNumber getMinimumJavaVersion() { public JavaSpecificationVersion getMinimumJavaVersion() {
return minJavaVersion; return minJavaVersion;
} }
} }
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
package jenkins.util.java; package jenkins.util.java;
import hudson.util.VersionNumber; import hudson.util.VersionNumber;
import io.jenkins.lib.versionnumber.JavaSpecificationVersion;
import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.accmod.restrictions.NoExternalUse;
...@@ -59,8 +60,8 @@ public class JavaUtils { ...@@ -59,8 +60,8 @@ public class JavaUtils {
/** /**
* Returns the JVM's current version as a {@link VersionNumber} instance. * Returns the JVM's current version as a {@link VersionNumber} instance.
*/ */
public static VersionNumber getCurrentJavaRuntimeVersionNumber() { public static JavaSpecificationVersion getCurrentJavaRuntimeVersionNumber() {
return new VersionNumber(getCurrentRuntimeJavaVersion()); return JavaSpecificationVersion.forCurrentJVM();
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册