diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d49e3935c5..566d2fac08 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -63,20 +63,20 @@ jobs:
matrix:
os:
- {
- name: "Linux JDK 21",
+ name: "Linux JDK 25",
runs-on: 'ubuntu-latest',
java: {
- version: 21
+ version: 25
},
maven: {
args: ''
}
}
- {
- name: "Windows JDK 21",
+ name: "Windows JDK 25",
runs-on: 'windows-latest',
java: {
- version: 21
+ version: 25
},
maven: {
args: ''
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6e74650f11..a51b851463 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -49,7 +49,7 @@ Just fork this repository, build your test case and attach it as an archive to a
### Build tools
-You will need JDK 21 or above for the build.
+You will need JDK 25 or above for the build.
A maven wrapper script is provided at the root of the repository (`./mvnw`),
so you can use that and don't need to care about the required version of Maven
@@ -97,7 +97,7 @@ If you already did that, close IntelliJ IDEA, run `./mvnw clean`, and open Intel
You will need to change some settings:
* `Build, Execution, Deployment > Build Tools > Maven`: set `Maven home path` to `Use Maven wrapper`
-* In `Project structure`, make sure the project JDK is JDK 21.
+* In `Project structure`, make sure the project JDK is JDK 25.
* Set up [formatting rules and code style](#setup-ide-formatting).
Then a few steps will initialize your workspace:
@@ -349,19 +349,19 @@ than [the one required for the build](#setup-build-tools),
you will need to have both JDKs installed,
and then you will need to pass additional properties to Maven.
-To test Hibernate Validator against the JDK 17:
+To test Hibernate Validator against the JDK 25:
```bash
./mvnw clean install
```
-To test Hibernate Validator against JDKs other than 17:
+To test Hibernate Validator against JDKs other than 25:
```bash
./mvnw clean install -Djava-version.test.release=21 -Djava-version.test.compiler.java_home=/path/to/jdk21
```
-Or more simply, if the JDK you want to test against is newer than 21 and is your default JDK:
+Or more simply, if the JDK you want to test against is newer than 25 and is your default JDK:
```bash
./mvnw clean install -Djava-version.test.release=18
diff --git a/Jenkinsfile b/Jenkinsfile
index 1f262aafaa..748427523c 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -75,7 +75,7 @@ import org.hibernate.jenkins.pipeline.helpers.alternative.AlternativeMultiMap
*
*/
-@Field final String DEFAULT_JDK_TOOL = 'OpenJDK 21 Latest'
+@Field final String DEFAULT_JDK_TOOL = 'OpenJDK 25 Latest'
@Field final String MAVEN_TOOL = 'Apache Maven 3.9'
// Default node pattern, to be used for resource-intensive stages.
@@ -115,31 +115,25 @@ stage('Configure') {
new JdkBuildEnvironment(testJavaVersion: '17', testCompilerTool: 'OpenJDK 17 Latest',
condition: TestCondition.AFTER_MERGE),
new JdkBuildEnvironment(testJavaVersion: '21', testCompilerTool: 'OpenJDK 21 Latest',
- condition: TestCondition.BEFORE_MERGE,
- isDefault: true),
+ condition: TestCondition.AFTER_MERGE),
// We want to enable preview features when testing newer builds of OpenJDK:
// even if we don't use these features, just enabling them can cause side effects
// and it's useful to test that.
- new JdkBuildEnvironment(testJavaVersion: '23', testCompilerTool: 'OpenJDK 23 Latest',
- testLauncherArgs: '--enable-preview',
- condition: TestCondition.AFTER_MERGE),
- new JdkBuildEnvironment(testJavaVersion: '24', testCompilerTool: 'OpenJDK 24 Latest',
- testLauncherArgs: '--enable-preview',
- condition: TestCondition.AFTER_MERGE),
new JdkBuildEnvironment(testJavaVersion: '25', testCompilerTool: 'OpenJDK 25 Latest',
testLauncherArgs: '--enable-preview',
- condition: TestCondition.AFTER_MERGE),
+ condition: TestCondition.BEFORE_MERGE,
+ isDefault: true),
new JdkBuildEnvironment(testJavaVersion: '26', testCompilerTool: 'OpenJDK 26 Latest',
testLauncherArgs: '--enable-preview',
condition: TestCondition.AFTER_MERGE)
],
wildflyTck: [
- new WildFlyTckBuildEnvironment(testJavaVersion: '21', testCompilerTool: 'OpenJDK 21 Latest',
+ new WildFlyTckBuildEnvironment(testJavaVersion: '25', testCompilerTool: 'OpenJDK 25 Latest',
condition: TestCondition.ON_DEMAND)
],
sigtest: [
- new SigTestBuildEnvironment(testJavaVersion: '21', jdkTool: 'OpenJDK 21 Latest',
+ new SigTestBuildEnvironment(testJavaVersion: '25', jdkTool: 'OpenJDK 25 Latest',
condition: TestCondition.BEFORE_MERGE)
]
])
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ListPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ListPropertyValueExtractor.java
index c02d98f113..2a7c7c7987 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ListPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ListPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.ListProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ListPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ListPropertyValueExtractor(), ListProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyKeyExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyKeyExtractor.java
index 8b59c730c9..16d6b20ab9 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyKeyExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyKeyExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.MapProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class MapPropertyKeyExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new MapPropertyKeyExtractor(), MapProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyValueExtractor.java
index fe1dacd7f9..83b77b0da7 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/MapPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.MapProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class MapPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new MapPropertyValueExtractor(), MapProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ObservableValueValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ObservableValueValueExtractor.java
index 7dc2cd2660..53d94da56a 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ObservableValueValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ObservableValueValueExtractor.java
@@ -10,8 +10,6 @@
import jakarta.validation.valueextraction.UnwrapByDefault;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
-
import javafx.beans.value.ObservableValue;
/**
@@ -19,8 +17,6 @@
*
* @author Gunnar Morling
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
@UnwrapByDefault
class ObservableValueValueExtractor implements ValueExtractor> {
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyListPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyListPropertyValueExtractor.java
index c2536a7dc9..9d17085153 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyListPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyListPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.ReadOnlyListProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ReadOnlyListPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ReadOnlyListPropertyValueExtractor(), ReadOnlyListProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyKeyExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyKeyExtractor.java
index 9d9d53dd2d..2dbaf2aec3 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyKeyExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyKeyExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.ReadOnlyMapProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ReadOnlyMapPropertyKeyExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ReadOnlyMapPropertyKeyExtractor(), ReadOnlyMapProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyValueExtractor.java
index 07c55f2db6..07735f298f 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlyMapPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.ReadOnlyMapProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ReadOnlyMapPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ReadOnlyMapPropertyValueExtractor(), ReadOnlyMapProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlySetPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlySetPropertyValueExtractor.java
index 41db79882d..bde49fadc5 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlySetPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/ReadOnlySetPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.ReadOnlySetProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ReadOnlySetPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ReadOnlySetPropertyValueExtractor(), ReadOnlySetProperty.class,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/SetPropertyValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/SetPropertyValueExtractor.java
index f48bd6fdea..63c6b6a0ae 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/SetPropertyValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/SetPropertyValueExtractor.java
@@ -10,7 +10,6 @@
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.MutableNode;
import javafx.beans.property.SetProperty;
@@ -24,8 +23,6 @@
*
* @author Guillaume Smet
*/
-@SuppressWarnings("restriction")
-@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class SetPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new SetPropertyValueExtractor(), SetProperty.class,
diff --git a/engine/src/test/java/org/hibernate/validator/test/internal/engine/ValidatorFactoryNoELBootstrapTest.java b/engine/src/test/java/org/hibernate/validator/test/internal/engine/ValidatorFactoryNoELBootstrapTest.java
index 4396e7279c..95dd113b65 100644
--- a/engine/src/test/java/org/hibernate/validator/test/internal/engine/ValidatorFactoryNoELBootstrapTest.java
+++ b/engine/src/test/java/org/hibernate/validator/test/internal/engine/ValidatorFactoryNoELBootstrapTest.java
@@ -23,7 +23,6 @@
import jakarta.validation.Validator;
import jakarta.validation.constraints.Min;
-import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.util.actions.GetClassLoader;
import org.hibernate.validator.internal.util.actions.SetContextClassLoader;
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
@@ -141,7 +140,6 @@ public ELIgnoringClassLoader(String packageMissing) {
}
@Override
- @IgnoreForbiddenApisErrors(reason = "getPackage() is deprecated but getDefinedPackage() is only available from JDK 9.")
public Class> loadClass(String className) throws ClassNotFoundException {
// This is what we in the end want to achieve. Throw ClassNotFoundException for jakarta.el classes
if ( className.startsWith( packageMissing ) ) {
diff --git a/jenkins/nightly/Jenkinsfile b/jenkins/nightly/Jenkinsfile
index ed43ac0979..da491f7c5e 100644
--- a/jenkins/nightly/Jenkinsfile
+++ b/jenkins/nightly/Jenkinsfile
@@ -6,7 +6,7 @@
@Library('hibernate-jenkins-pipeline-helpers') _
def withMavenWorkspace(Closure body) {
- withMavenWorkspace('OpenJDK 21 Latest', body)
+ withMavenWorkspace('OpenJDK 25 Latest', body)
}
def withMavenWorkspace(jdk, Closure body) {
diff --git a/jenkins/release/Jenkinsfile b/jenkins/release/Jenkinsfile
index d2cd25713b..aaa4ac2e9f 100644
--- a/jenkins/release/Jenkinsfile
+++ b/jenkins/release/Jenkinsfile
@@ -13,7 +13,7 @@ pipeline {
}
tools {
maven 'Apache Maven 3.9'
- jdk 'OpenJDK 21 Latest'
+ jdk 'OpenJDK 25 Latest'
}
options {
buildDiscarder logRotator(daysToKeepStr: '30', numToKeepStr: '10')
diff --git a/jenkins/snapshot-publish/Jenkinsfile b/jenkins/snapshot-publish/Jenkinsfile
index 6bf1890b65..fdb69394a7 100644
--- a/jenkins/snapshot-publish/Jenkinsfile
+++ b/jenkins/snapshot-publish/Jenkinsfile
@@ -18,7 +18,7 @@ pipeline {
}
tools {
maven 'Apache Maven 3.9'
- jdk 'OpenJDK 21 Latest'
+ jdk 'OpenJDK 25 Latest'
}
options {
// Wait for 1h before publishing snapshots, in case there's more commits.
diff --git a/pom.xml b/pom.xml
index 775d951381..751d9f8edd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -348,9 +348,9 @@
${java-version.main.release}
${java-version.main.release}
+ ${java-version.main.release}
${java-version.test.release}
${java-version.test.release}
- ${java-version.main.release}
${java-version.test.release}
- 21
+ 25
+
false
+ false
true
**.IgnoreForbiddenApisErrors
@@ -926,25 +927,32 @@
jdk-system-out
jdk-non-portable
+
+
-
- jdk-unsafe-17
- jdk-unsafe-18
- jdk-unsafe-19
- jdk-unsafe-21
- jdk-unsafe-22
+
+ jdk-unsafe
+
jdk-deprecated-17
jdk-deprecated-18
jdk-deprecated-19
+ jdk-deprecated-20
jdk-deprecated-21
jdk-deprecated-22
+ jdk-deprecated-23
+ jdk-deprecated-24
jdk-internal-17
jdk-internal-18
jdk-internal-19
+ jdk-internal-20
jdk-internal-21
jdk-internal-22
+ jdk-internal-23
+ jdk-internal-24
@@ -955,8 +963,12 @@
verify
+
+ 24
jdk-deprecated
+ jdk-non-portable
+ jdk-internal
@@ -1182,7 +1194,7 @@
-Xdoclint:all,-missing
- ${project.build.directory}/hibernate-asciidoctor-theme/javadoc/jdk21/stylesheet.css
+ ${project.build.directory}/hibernate-asciidoctor-theme/javadoc/jdk${jdk.min.version}/stylesheet.css