diff --git a/java-frontend/src/main/java/org/sonar/java/model/JavaVersionImpl.java b/java-frontend/src/main/java/org/sonar/java/model/JavaVersionImpl.java index 58e23d28221..84c17493422 100644 --- a/java-frontend/src/main/java/org/sonar/java/model/JavaVersionImpl.java +++ b/java-frontend/src/main/java/org/sonar/java/model/JavaVersionImpl.java @@ -45,7 +45,8 @@ public class JavaVersionImpl implements JavaVersion { private static final int JAVA_23 = 23; private static final int JAVA_24 = 24; private static final int JAVA_25 = 25; - public static final int MAX_SUPPORTED = JAVA_25; + private static final int JAVA_26 = 26; + public static final int MAX_SUPPORTED = JAVA_26; private final int javaVersion; private final boolean previewFeaturesEnabled; @@ -173,6 +174,11 @@ public boolean isJava25Compatible() { return JAVA_25 <= javaVersion; } + @Override + public boolean isJava26Compatible() { + return JAVA_26 <= javaVersion; + } + private boolean notSetOrAtLeast(int requiredJavaVersion) { return isNotSet() || requiredJavaVersion <= javaVersion; } diff --git a/java-frontend/src/main/java/org/sonar/plugins/java/api/JavaVersion.java b/java-frontend/src/main/java/org/sonar/plugins/java/api/JavaVersion.java index 28585a31b0b..e738af9aed6 100644 --- a/java-frontend/src/main/java/org/sonar/plugins/java/api/JavaVersion.java +++ b/java-frontend/src/main/java/org/sonar/plugins/java/api/JavaVersion.java @@ -173,6 +173,14 @@ public interface JavaVersion { */ boolean isJava25Compatible(); + /** + * Test if java version of the project is greater than or equal to 26. + * Remark - Contrary to other isJava*Compatible methods, this one will NOT return true if version is not set + * @return true if java version used is >= 26 + * @since SonarJava 8.34: Support of Java 26 + */ + boolean isJava26Compatible(); + /** * get java version as integer * @return an int representing the java version diff --git a/java-frontend/src/test/java/org/sonar/java/model/JavaVersionImplTest.java b/java-frontend/src/test/java/org/sonar/java/model/JavaVersionImplTest.java index 6c3d7c3cc26..7ef8b19b546 100644 --- a/java-frontend/src/test/java/org/sonar/java/model/JavaVersionImplTest.java +++ b/java-frontend/src/test/java/org/sonar/java/model/JavaVersionImplTest.java @@ -54,11 +54,12 @@ void no_version_set() { assertThat(version.isJava23Compatible()).isFalse(); assertThat(version.isJava24Compatible()).isFalse(); assertThat(version.isJava25Compatible()).isFalse(); + assertThat(version.isJava26Compatible()).isFalse(); assertThat(version.asInt()).isEqualTo(-1); } @ParameterizedTest(name = "JavaVersion: \"{0}\"") - @ValueSource(ints = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 42}) + @ValueSource(ints = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 42}) void java_versions(int javaVersionAsInt) { JavaVersion version = new JavaVersionImpl(javaVersionAsInt); assertThat(version.isSet()).isTrue(); @@ -81,6 +82,7 @@ void java_versions(int javaVersionAsInt) { assertThat(version.isJava23Compatible()).isEqualTo(javaVersionAsInt >= 23); assertThat(version.isJava24Compatible()).isEqualTo(javaVersionAsInt >= 24); assertThat(version.isJava25Compatible()).isEqualTo(javaVersionAsInt >= 25); + assertThat(version.isJava26Compatible()).isEqualTo(javaVersionAsInt >= 26); assertThat(version.asInt()).isEqualTo(javaVersionAsInt); } @@ -101,9 +103,9 @@ void compatibilityMesssages() { @Test void test_effective_java_version() { - assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("25"); + assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("26"); assertThat(new JavaVersionImpl(10).effectiveJavaVersionAsString()).isEqualTo("10"); - assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("25"); + assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("26"); } @Test