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