Skip to content

Commit f664abb

Browse files
committed
Add JavaVersion.JAVA_24
Add SystemUtils.IS_JAVA_24
1 parent bf0ea77 commit f664abb

File tree

5 files changed

+77
-2
lines changed

5 files changed

+77
-2
lines changed

src/changes/changes.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ The <action> type attribute can be add,update,fix,remove.
9898
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Strings and refactor StringUtils.</action>
9999
<action issue="LANG-1747" type="add" dev="ggregory" due-to="Oliver B. Fischer, Gary Gregory">Add StopWatch.run([Failable]Runnable) and get([Failable]Supplier).</action>
100100
<action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_23.</action>
101+
<action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_24.</action>
101102
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_23.</action>
103+
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_24.</action>
102104
<action type="add" dev="ggregory" due-to="Gary Gregory">Add IntegerRange.toIntStream().</action>
103105
<action type="add" dev="ggregory" due-to="Gary Gregory">Add LongRange.toLongStream().</action>
104106
<action type="add" dev="ggregory" due-to="Gary Gregory">Add IntStrams.of(int...).</action>

src/main/java/org/apache/commons/lang3/JavaVersion.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ public enum JavaVersion {
185185
*/
186186
JAVA_23(23, "23"),
187187

188+
/**
189+
* Java 24.
190+
*
191+
* @since 3.18.0
192+
*/
193+
JAVA_24(24, "24"),
194+
188195
/**
189196
* The most recent Java version. Mainly introduced to avoid to break when a new version of Java is used.
190197
*/
@@ -257,6 +264,8 @@ static JavaVersion get(final String versionStr) {
257264
return JAVA_22;
258265
case "23":
259266
return JAVA_23;
267+
case "24":
268+
return JAVA_24;
260269
default:
261270
final float v = toFloatVersion(versionStr);
262271
if (v - 1. < 1.) { // then we need to check decimals > .9

src/main/java/org/apache/commons/lang3/SystemUtils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,22 @@ public class SystemUtils {
11091109
*/
11101110
public static final boolean IS_JAVA_23 = getJavaVersionMatches("23");
11111111

1112+
/**
1113+
* The constant {@code true} if this is Java version 24 (also 24.x versions).
1114+
* <p>
1115+
* The result depends on the value of the {@link #JAVA_SPECIFICATION_VERSION} constant.
1116+
* </p>
1117+
* <p>
1118+
* The field will return {@code false} if {@link #JAVA_SPECIFICATION_VERSION} is {@code null}.
1119+
* </p>
1120+
* <p>
1121+
* This value is initialized when the class is loaded.
1122+
* </p>
1123+
*
1124+
* @since 3.18.0
1125+
*/
1126+
public static final boolean IS_JAVA_24 = getJavaVersionMatches("24");
1127+
11121128
// Operating system checks
11131129
// -----------------------------------------------------------------------
11141130
// These MUST be declared after those above as they depend on the

src/test/java/org/apache/commons/lang3/JavaVersionTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,12 @@ void testGetJavaVersion() throws Exception {
6565
assertEquals(JavaVersion.JAVA_21, JavaVersion.get("21"));
6666
assertEquals(JavaVersion.JAVA_22, JavaVersion.get("22"));
6767
assertEquals(JavaVersion.JAVA_23, JavaVersion.get("23"));
68+
assertEquals(JavaVersion.JAVA_24, JavaVersion.get("24"));
6869

6970
assertEquals(JavaVersion.JAVA_RECENT, JavaVersion.get("1.10"), "1.10 failed");
7071
// assertNull("2.10 unexpectedly worked", JavaVersion.get("2.10"));
7172
assertEquals(JavaVersion.get("1.5"), JavaVersion.getJavaVersion("1.5"), "Wrapper method failed");
72-
assertEquals(JavaVersion.JAVA_RECENT, JavaVersion.get("24"), "Unhandled"); // LANG-1384
73+
assertEquals(JavaVersion.JAVA_RECENT, JavaVersion.get("25"), "Unhandled"); // LANG-1384
7374
}
7475

7576
@Test

src/test/java/org/apache/commons/lang3/SystemUtilsTest.java

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@ void testIsJavaVersionAtLeast() {
388388
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
389389
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
390390
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
391+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
391392
} else if (SystemUtils.IS_JAVA_9) {
392393
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_1));
393394
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_2));
@@ -412,6 +413,7 @@ void testIsJavaVersionAtLeast() {
412413
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
413414
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
414415
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
416+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
415417
} else if (SystemUtils.IS_JAVA_10) {
416418
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_1));
417419
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_2));
@@ -436,6 +438,7 @@ void testIsJavaVersionAtLeast() {
436438
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
437439
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
438440
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
441+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
439442
} else if (SystemUtils.IS_JAVA_11) {
440443
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_1));
441444
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_2));
@@ -460,6 +463,7 @@ void testIsJavaVersionAtLeast() {
460463
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
461464
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
462465
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
466+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
463467
} else if (SystemUtils.IS_JAVA_12) {
464468
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_1));
465469
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_2));
@@ -484,6 +488,7 @@ void testIsJavaVersionAtLeast() {
484488
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
485489
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
486490
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
491+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
487492
} else if (SystemUtils.IS_JAVA_13) {
488493
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_1));
489494
assertTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_2));
@@ -508,6 +513,7 @@ void testIsJavaVersionAtLeast() {
508513
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_21));
509514
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_22));
510515
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_23));
516+
assertFalse(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_24));
511517
}
512518
}
513519

@@ -537,6 +543,7 @@ void testIsJavaVersionAtMost() {
537543
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
538544
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
539545
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
546+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
540547
} else if (SystemUtils.IS_JAVA_9) {
541548
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
542549
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -561,6 +568,7 @@ void testIsJavaVersionAtMost() {
561568
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
562569
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
563570
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
571+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
564572
} else if (SystemUtils.IS_JAVA_10) {
565573
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
566574
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -585,6 +593,7 @@ void testIsJavaVersionAtMost() {
585593
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
586594
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
587595
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
596+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
588597
} else if (SystemUtils.IS_JAVA_11) {
589598
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
590599
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -609,6 +618,7 @@ void testIsJavaVersionAtMost() {
609618
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
610619
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
611620
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
621+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
612622
} else if (SystemUtils.IS_JAVA_12) {
613623
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
614624
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -633,6 +643,7 @@ void testIsJavaVersionAtMost() {
633643
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
634644
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
635645
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
646+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
636647
} else if (SystemUtils.IS_JAVA_13) {
637648
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
638649
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -657,6 +668,7 @@ void testIsJavaVersionAtMost() {
657668
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
658669
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
659670
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
671+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
660672
} else if (SystemUtils.IS_JAVA_14) {
661673
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
662674
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -681,6 +693,7 @@ void testIsJavaVersionAtMost() {
681693
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
682694
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
683695
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
696+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
684697
} else if (SystemUtils.IS_JAVA_15) {
685698
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
686699
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -705,6 +718,7 @@ void testIsJavaVersionAtMost() {
705718
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
706719
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
707720
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
721+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
708722
} else if (SystemUtils.IS_JAVA_16) {
709723
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
710724
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -729,7 +743,8 @@ void testIsJavaVersionAtMost() {
729743
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
730744
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
731745
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
732-
} else if (SystemUtils.IS_JAVA_17) {
746+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
747+
} else if (SystemUtils.IS_JAVA_17) {
733748
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
734749
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
735750
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_3));
@@ -753,6 +768,7 @@ void testIsJavaVersionAtMost() {
753768
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
754769
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
755770
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
771+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
756772
} else if (SystemUtils.IS_JAVA_18) {
757773
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
758774
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -777,6 +793,7 @@ void testIsJavaVersionAtMost() {
777793
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
778794
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
779795
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
796+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
780797
} else if (SystemUtils.IS_JAVA_19) {
781798
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
782799
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -801,6 +818,7 @@ void testIsJavaVersionAtMost() {
801818
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
802819
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
803820
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
821+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
804822
} else if (SystemUtils.IS_JAVA_20) {
805823
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
806824
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -825,6 +843,7 @@ void testIsJavaVersionAtMost() {
825843
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
826844
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
827845
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
846+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
828847
} else if (SystemUtils.IS_JAVA_21) {
829848
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
830849
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -849,6 +868,7 @@ void testIsJavaVersionAtMost() {
849868
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
850869
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
851870
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
871+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
852872
} else if (SystemUtils.IS_JAVA_22) {
853873
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
854874
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -873,6 +893,7 @@ void testIsJavaVersionAtMost() {
873893
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
874894
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
875895
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
896+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
876897
} else if (SystemUtils.IS_JAVA_23) {
877898
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
878899
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
@@ -897,6 +918,32 @@ void testIsJavaVersionAtMost() {
897918
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
898919
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
899920
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
921+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
922+
} else if (SystemUtils.IS_JAVA_24) {
923+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_1));
924+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_2));
925+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_3));
926+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_4));
927+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_5));
928+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_6));
929+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_7));
930+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_8));
931+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_9));
932+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_10));
933+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_11));
934+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_12));
935+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_13));
936+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_14));
937+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_15));
938+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_16));
939+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_17));
940+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_18));
941+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_19));
942+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_20));
943+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_21));
944+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_22));
945+
assertFalse(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_23));
946+
assertTrue(SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_24));
900947
}
901948
}
902949

0 commit comments

Comments
 (0)