diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index f29c5092a8..6d22cfafe7 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -10222,6 +10222,8 @@ public class JavaGenerator extends AbstractGenerator { if (scala) {} else if (kotlin) out.println("@Suppress(\"UNCHECKED_CAST\")"); + else if (Internal.javaVersion() >= 21) + out.println("@%s({ \"all\", \"unchecked\", \"rawtypes\", \"this-escape\" })", out.ref("java.lang.SuppressWarnings")); else out.println("@%s({ \"all\", \"unchecked\", \"rawtypes\" })", out.ref("java.lang.SuppressWarnings")); diff --git a/jOOQ/src/main/java/org/jooq/impl/Internal.java b/jOOQ/src/main/java/org/jooq/impl/Internal.java index d8d076df31..6129e4dc4f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Internal.java +++ b/jOOQ/src/main/java/org/jooq/impl/Internal.java @@ -107,6 +107,8 @@ import org.jooq.exception.DataAccessException; import org.jooq.exception.DataTypeException; import org.jooq.impl.QOM.CreateTable; import org.jooq.impl.QOM.GenerationLocation; +import org.jooq.tools.reflect.Reflect; +import org.jooq.tools.reflect.ReflectException; // ... // ... @@ -997,4 +999,36 @@ public final class Internal { public static final ConverterContext converterContext() { return CONVERTER_SCOPE.get(); } + + private static final Lazy JAVA_VERSION = Lazy.of(() -> { + try { + + return Reflect.onClass(Runtime.class) + + // Since Java 9 + .call("version") + + // Since Java 10 + .call("feature") + .get(); + } + catch (ReflectException e) { + return 8; + } + }); + + /** + * Get the Java version (relevant to jOOQ) as an int. + *

+ * Supported versions are: + *

+ */ + public static final int javaVersion() { + return JAVA_VERSION.get(); + } }