[LANG-1427] Add API
org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ec5555d..b1e02e6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -51,6 +51,7 @@
<action issue="LANG-1415" type="update" dev="britter">Update Java Language requirement to 1.8</action>
<action issue="LANG-1411" type="add" dev="britter" due-to="Alexander Tsvetkov">Add isEmpty method to ObjectUtils</action>
<action issue="LANG-1422" type="add" dev="ggregory">Add null-safe StringUtils.valueOf(char[]) to delegate to String.valueOf(char[])</action>
+ <action issue="LANG-1427" type="add" dev="ggregory">Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion)</action>
</release>
<release version="3.8.1" date="2018-09-19" description="This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file.">
diff --git a/src/main/java/org/apache/commons/lang3/JavaVersion.java b/src/main/java/org/apache/commons/lang3/JavaVersion.java
index 148c99e..aacd3a1 100644
--- a/src/main/java/org/apache/commons/lang3/JavaVersion.java
+++ b/src/main/java/org/apache/commons/lang3/JavaVersion.java
@@ -141,6 +141,21 @@ public boolean atLeast(final JavaVersion requiredVersion) {
return this.value >= requiredVersion.value;
}
+ //-----------------------------------------------------------------------
+ /**
+ * <p>Whether this version of Java is at most the version of Java passed in.</p>
+ *
+ * <p>For example:<br>
+ * {@code myVersion.atMost(JavaVersion.JAVA_1_4)}<p>
+ *
+ * @param requiredVersion the version to check against, not null
+ * @return true if this version is equal to or greater than the specified version
+ * @since 3.9
+ */
+ public boolean atMost(final JavaVersion requiredVersion) {
+ return this.value <= requiredVersion.value;
+ }
+
/**
* Transforms the given string with a Java version number to the
* corresponding constant of this enumeration class. This method is used
diff --git a/src/main/java/org/apache/commons/lang3/SystemUtils.java b/src/main/java/org/apache/commons/lang3/SystemUtils.java
index a37229b..cc51f11 100644
--- a/src/main/java/org/apache/commons/lang3/SystemUtils.java
+++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java
@@ -1679,12 +1679,6 @@ public static boolean isJavaAwtHeadless() {
* Is the Java version at least the requested version.
* </p>
* <p>
- * Example input:
- * </p>
- * <ul>
- * <li>{@code 1.2f} to test for Java 1.2</li>
- * <li>{@code 1.31f} to test for Java 1.3.1</li>
- * </ul>
*
* @param requiredVersion the required version, for example 1.31f
* @return {@code true} if the actual version is equal or greater than the required version
@@ -1695,6 +1689,22 @@ public static boolean isJavaVersionAtLeast(final JavaVersion requiredVersion) {
/**
* <p>
+ * Is the Java version at most the requested version.
+ * </p>
+ * <p>
+ * Example input:
+ * </p>
+ *
+ * @param requiredVersion the required version, for example 1.31f
+ * @return {@code true} if the actual version is equal or greater than the required version
+ * @since 3.9
+ */
+ public static boolean isJavaVersionAtMost(final JavaVersion requiredVersion) {
+ return JAVA_SPECIFICATION_VERSION_AS_ENUM.atMost(requiredVersion);
+ }
+
+ /**
+ * <p>
* Decides if the Java version matches.
* </p>
* <p>
diff --git a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
index e56d1b0..82dcd14 100644
--- a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
@@ -421,19 +421,7 @@ public void testJavaVersionMatches() {
@Test
public void testIsJavaVersionAtLeast() {
- if (SystemUtils.IS_JAVA_1_7) {
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
- assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
- assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
- assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_9));
- assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
- assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_11));
- } else if (SystemUtils.IS_JAVA_1_8) {
+ if (SystemUtils.IS_JAVA_1_8) {
assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
@@ -485,6 +473,59 @@ public void testIsJavaVersionAtLeast() {
}
@Test
+ public void testIsJavaVersionAtMost() {
+ if (SystemUtils.IS_JAVA_1_8) {
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
+ } else if (SystemUtils.IS_JAVA_9) {
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
+ } else if (SystemUtils.IS_JAVA_10) {
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
+ } else if (SystemUtils.IS_JAVA_11) {
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
+ assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_10));
+ assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
+ }
+ }
+
+ @Test
public void testOSMatchesName() {
String osName = null;
assertFalse(SystemUtils.isOSNameMatch(osName, "Windows"));