Skip to content

Commit 4223f70

Browse files
committed
Upgrade to Spring Framework 6 and Jakarta EE 9
Closes gh-750 Closes gh-748
1 parent 68ff043 commit 4223f70

File tree

37 files changed

+147
-217
lines changed

37 files changed

+147
-217
lines changed

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ nohttp {
2525
}
2626

2727
ext {
28-
springVersion = "5.0.15.RELEASE"
28+
springFrameworkVersion = "6.0.0-SNAPSHOT"
2929
javadocLinks = [
3030
"https://docs.oracle.com/javase/8/docs/api/",
31-
"https://docs.spring.io/spring-framework/docs/$springVersion/javadoc-api/",
31+
"https://docs.spring.io/spring-framework/docs/$springFrameworkVersion/javadoc-api/",
3232
"https://docs.jboss.org/hibernate/stable/beanvalidation/api/",
3333
"https://docs.jboss.org/hibernate/stable/validator/api/"
3434
] as String[]

docs/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ dependencies {
1616
asciidoctorExt("io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch:0.5.0")
1717

1818
internal(platform(project(":spring-restdocs-platform")))
19-
internal(enforcedPlatform("org.springframework:spring-framework-bom:5.3.8"))
19+
internal(enforcedPlatform("org.springframework:spring-framework-bom:$springFrameworkVersion"))
2020

2121
testImplementation(project(":spring-restdocs-mockmvc"))
2222
testImplementation(project(":spring-restdocs-restassured"))
2323
testImplementation(project(":spring-restdocs-webtestclient"))
2424
testImplementation("io.rest-assured:rest-assured")
25-
testImplementation("javax.validation:validation-api")
25+
testImplementation("jakarta.validation:jakarta.validation-api")
2626
testImplementation("junit:junit")
2727
testImplementation("org.testng:testng:6.9.10")
2828
testImplementation("org.junit.jupiter:junit-jupiter-api")

docs/src/docs/asciidoc/documenting-your-api.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1252,7 +1252,7 @@ example of such a resource bundle].
12521252

12531253
Each key in the resource bundle is the fully-qualified name of a constraint plus a
12541254
`.description`. For example, the key for the standard `@NotNull` constraint is
1255-
`javax.validation.constraints.NotNull.description`.
1255+
`jakarta.validation.constraints.NotNull.description`.
12561256

12571257
You can use a property placeholder referring to a constraint's attributes in its
12581258
description. For example, the default description of the `@Min` constraint,
@@ -1318,7 +1318,7 @@ You can configure which snippets are produced by default. See the
13181318
=== Using Parameterized Output Directories
13191319

13201320
When using MockMvc, REST Assured, or `WebTestClient` you can parameterize the output directory used by
1321-
`document`. Parameterizing output with `WebTestClient` requires Spring Framework 5.3.5 or later.
1321+
`document`.
13221322

13231323
The following parameters are supported:
13241324

docs/src/docs/asciidoc/getting-started.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ If you want to jump straight in, a number of sample applications are available:
7777
Spring REST Docs has the following minimum requirements:
7878

7979
* Java 17
80-
* Spring Framework 5 (5.0.2 or later)
80+
* Spring Framework 6
8181

8282
Additionally, the `spring-restdocs-restassured` module requires REST Assured 4 (4.4 or later).
8383

docs/src/test/java/com/example/Constraints.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import java.util.List;
2020

21-
import javax.validation.constraints.NotNull;
22-
import javax.validation.constraints.Size;
21+
import jakarta.validation.constraints.NotNull;
22+
import jakarta.validation.constraints.Size;
2323

2424
import org.springframework.restdocs.constraints.ConstraintDescriptions;
2525

samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import java.util.HashMap;
3939
import java.util.Map;
4040

41-
import javax.servlet.RequestDispatcher;
41+
import jakarta.servlet.RequestDispatcher;
4242

4343
import org.junit.Before;
4444
import org.junit.Rule;

samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import java.util.HashMap;
3838
import java.util.Map;
3939

40-
import javax.servlet.RequestDispatcher;
40+
import jakarta.servlet.RequestDispatcher;
4141

4242
import org.junit.Before;
4343
import org.junit.Rule;

samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/ExceptionSupressingErrorAttributes.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public Map<String, Object> getErrorAttributes(WebRequest webRequest,
3232
ErrorAttributeOptions options) {
3333
Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, options);
3434
errorAttributes.remove("exception");
35-
Object message = webRequest.getAttribute("javax.servlet.error.message", RequestAttributes.SCOPE_REQUEST);
35+
Object message = webRequest.getAttribute("jakarta.servlet.error.message", RequestAttributes.SCOPE_REQUEST);
3636
if (message != null) {
3737
errorAttributes.put("message", message);
3838
}

samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NoteInput.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import java.util.Collections;
2121
import java.util.List;
2222

23-
import javax.validation.constraints.NotBlank;
23+
import jakarta.validation.constraints.NotBlank;
2424

2525
import com.fasterxml.jackson.annotation.JsonCreator;
2626
import com.fasterxml.jackson.annotation.JsonProperty;

samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NullOrNotBlank.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import java.lang.annotation.RetentionPolicy;
2222
import java.lang.annotation.Target;
2323

24-
import javax.validation.Constraint;
25-
import javax.validation.Payload;
26-
import javax.validation.constraints.NotBlank;
27-
import javax.validation.constraints.Null;
24+
import jakarta.validation.Constraint;
25+
import jakarta.validation.Payload;
26+
import jakarta.validation.constraints.NotBlank;
27+
import jakarta.validation.constraints.Null;
2828

2929
import org.hibernate.validator.constraints.CompositionType;
3030
import org.hibernate.validator.constraints.ConstraintComposition;

samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/RestNotesControllerAdvice.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import java.io.IOException;
2020

21-
import javax.servlet.http.HttpServletRequest;
22-
import javax.servlet.http.HttpServletResponse;
21+
import jakarta.servlet.http.HttpServletRequest;
22+
import jakarta.servlet.http.HttpServletResponse;
2323

2424
import org.springframework.http.HttpStatus;
2525
import org.springframework.web.bind.annotation.ControllerAdvice;

samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/TagInput.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.example.notes;
1818

19-
import javax.validation.constraints.NotBlank;
19+
import jakarta.validation.constraints.NotBlank;
2020

2121
import com.fasterxml.jackson.annotation.JsonCreator;
2222
import com.fasterxml.jackson.annotation.JsonProperty;

samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
import java.util.HashMap;
4343
import java.util.Map;
4444

45-
import javax.servlet.RequestDispatcher;
45+
import jakarta.servlet.RequestDispatcher;
4646

4747
import org.junit.Before;
4848
import org.junit.Rule;

samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/NullOrNotBlankTests.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020

2121
import java.util.Set;
2222

23-
import javax.validation.ConstraintViolation;
24-
import javax.validation.Validation;
25-
import javax.validation.Validator;
23+
import jakarta.validation.ConstraintViolation;
24+
import jakarta.validation.Validation;
25+
import jakarta.validation.Validator;
2626

2727
import org.junit.Test;
2828

spring-restdocs-core/build.gradle

+3-10
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ dependencies {
4646

4747
optional(platform(project(":spring-restdocs-platform")))
4848
optional("commons-codec:commons-codec")
49-
optional("javax.validation:validation-api")
49+
optional("jakarta.validation:jakarta.validation-api")
5050
optional("junit:junit")
5151
optional("org.hibernate.validator:hibernate-validator")
5252
optional("org.junit.jupiter:junit-jupiter-api")
53-
53+
5454
testFixturesApi(platform(project(":spring-restdocs-platform")))
5555
testFixturesApi("junit:junit")
5656
testFixturesApi("org.assertj:assertj-core")
@@ -68,7 +68,7 @@ dependencies {
6868
testImplementation("org.hamcrest:hamcrest-library")
6969
testImplementation("org.springframework:spring-test")
7070

71-
testRuntimeOnly("org.glassfish:javax.el:3.0.0")
71+
testRuntimeOnly("org.glassfish:jakarta.el:4.0.2")
7272
}
7373

7474
jar {
@@ -85,10 +85,3 @@ components.java.withVariantsFromConfiguration(configurations.testFixturesApiElem
8585
components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) {
8686
skip()
8787
}
88-
89-
compatibilityTest {
90-
dependency("Spring Framework") { springFramework ->
91-
springFramework.groupId = "org.springframework"
92-
springFramework.versions = ["5.1.+", "5.2.+", "5.3.+"]
93-
}
94-
}

spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java

+24-27
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,28 @@
2020
import java.util.MissingResourceException;
2121
import java.util.ResourceBundle;
2222

23-
import javax.validation.constraints.AssertFalse;
24-
import javax.validation.constraints.AssertTrue;
25-
import javax.validation.constraints.DecimalMax;
26-
import javax.validation.constraints.DecimalMin;
27-
import javax.validation.constraints.Digits;
28-
import javax.validation.constraints.Email;
29-
import javax.validation.constraints.Future;
30-
import javax.validation.constraints.FutureOrPresent;
31-
import javax.validation.constraints.Max;
32-
import javax.validation.constraints.Min;
33-
import javax.validation.constraints.Negative;
34-
import javax.validation.constraints.NegativeOrZero;
35-
import javax.validation.constraints.NotBlank;
36-
import javax.validation.constraints.NotEmpty;
37-
import javax.validation.constraints.NotNull;
38-
import javax.validation.constraints.Null;
39-
import javax.validation.constraints.Past;
40-
import javax.validation.constraints.PastOrPresent;
41-
import javax.validation.constraints.Pattern;
42-
import javax.validation.constraints.Positive;
43-
import javax.validation.constraints.PositiveOrZero;
44-
import javax.validation.constraints.Size;
45-
23+
import jakarta.validation.constraints.AssertFalse;
24+
import jakarta.validation.constraints.AssertTrue;
25+
import jakarta.validation.constraints.DecimalMax;
26+
import jakarta.validation.constraints.DecimalMin;
27+
import jakarta.validation.constraints.Digits;
28+
import jakarta.validation.constraints.Email;
29+
import jakarta.validation.constraints.Future;
30+
import jakarta.validation.constraints.FutureOrPresent;
31+
import jakarta.validation.constraints.Max;
32+
import jakarta.validation.constraints.Min;
33+
import jakarta.validation.constraints.Negative;
34+
import jakarta.validation.constraints.NegativeOrZero;
35+
import jakarta.validation.constraints.NotBlank;
36+
import jakarta.validation.constraints.NotEmpty;
37+
import jakarta.validation.constraints.NotNull;
38+
import jakarta.validation.constraints.Null;
39+
import jakarta.validation.constraints.Past;
40+
import jakarta.validation.constraints.PastOrPresent;
41+
import jakarta.validation.constraints.Pattern;
42+
import jakarta.validation.constraints.Positive;
43+
import jakarta.validation.constraints.PositiveOrZero;
44+
import jakarta.validation.constraints.Size;
4645
import org.hibernate.validator.constraints.CodePointLength;
4746
import org.hibernate.validator.constraints.CreditCardNumber;
4847
import org.hibernate.validator.constraints.Currency;
@@ -52,7 +51,6 @@
5251
import org.hibernate.validator.constraints.Mod10Check;
5352
import org.hibernate.validator.constraints.Mod11Check;
5453
import org.hibernate.validator.constraints.Range;
55-
import org.hibernate.validator.constraints.SafeHtml;
5654
import org.hibernate.validator.constraints.URL;
5755

5856
import org.springframework.util.PropertyPlaceholderHelper;
@@ -63,8 +61,8 @@
6361
* A {@link ConstraintDescriptionResolver} that resolves constraint descriptions from a
6462
* {@link ResourceBundle}. The resource bundle's keys are the name of the constraint with
6563
* {@code .description} appended. For example, the key for the constraint named
66-
* {@code javax.validation.constraints.NotNull} is
67-
* {@code javax.validation.constraints.NotNull.description}.
64+
* {@code jakarta.validation.constraints.NotNull} is
65+
* {@code jakarta.validation.constraints.NotNull.description}.
6866
* <p>
6967
* Default descriptions are provided for Bean Validation 2.0's constraints:
7068
*
@@ -109,7 +107,6 @@
109107
* <li>{@link org.hibernate.validator.constraints.NotBlank}
110108
* <li>{@link org.hibernate.validator.constraints.NotEmpty}
111109
* <li>{@link Range}
112-
* <li>{@link SafeHtml}
113110
* <li>{@link URL}
114111
* </ul>
115112
*

spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22-
import javax.validation.Validation;
23-
import javax.validation.Validator;
24-
import javax.validation.ValidatorFactory;
25-
import javax.validation.constraints.NotNull;
26-
import javax.validation.metadata.BeanDescriptor;
27-
import javax.validation.metadata.ConstraintDescriptor;
28-
import javax.validation.metadata.PropertyDescriptor;
22+
import jakarta.validation.Validation;
23+
import jakarta.validation.Validator;
24+
import jakarta.validation.ValidatorFactory;
25+
import jakarta.validation.constraints.NotNull;
26+
import jakarta.validation.metadata.BeanDescriptor;
27+
import jakarta.validation.metadata.ConstraintDescriptor;
28+
import jakarta.validation.metadata.PropertyDescriptor;
2929

3030
/**
3131
* A {@link ConstraintResolver} that uses a Bean Validation {@link Validator} to resolve
3232
* constraints. The name of the constraint is the fully-qualified class name of the
3333
* constraint annotation. For example, a {@link NotNull} constraint will be named
34-
* {@code javax.validation.constraints.NotNull}.
34+
* {@code jakarta.validation.constraints.NotNull}.
3535
*
3636
* @author Andy Wilkinson
3737
*
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
javax.validation.constraints.AssertFalse.description=Must be false
2-
javax.validation.constraints.AssertTrue.description=Must be true
3-
javax.validation.constraints.DecimalMax.description=Must be at most ${value}
4-
javax.validation.constraints.DecimalMin.description=Must be at least ${value}
5-
javax.validation.constraints.Digits.description=Must have at most ${integer} integral digits and ${fraction} fractional digits
6-
javax.validation.constraints.Email.description=Must be a well-formed email address
7-
javax.validation.constraints.Future.description=Must be in the future
8-
javax.validation.constraints.FutureOrPresent.description=Must be in the future or the present
9-
javax.validation.constraints.Max.description=Must be at most ${value}
10-
javax.validation.constraints.Min.description=Must be at least ${value}
11-
javax.validation.constraints.Negative.description=Must be negative
12-
javax.validation.constraints.NegativeOrZero.description=Must be negative or zero
13-
javax.validation.constraints.NotBlank.description=Must not be blank
14-
javax.validation.constraints.NotEmpty.description=Must not be empty
15-
javax.validation.constraints.NotNull.description=Must not be null
16-
javax.validation.constraints.Null.description=Must be null
17-
javax.validation.constraints.Past.description=Must be in the past
18-
javax.validation.constraints.PastOrPresent.description=Must be in the past or the present
19-
javax.validation.constraints.Pattern.description=Must match the regular expression `${regexp}`
20-
javax.validation.constraints.Positive.description=Must be positive
21-
javax.validation.constraints.PositiveOrZero.description=Must be positive or zero
22-
javax.validation.constraints.Size.description=Size must be between ${min} and ${max} inclusive
1+
jakarta.validation.constraints.AssertFalse.description=Must be false
2+
jakarta.validation.constraints.AssertTrue.description=Must be true
3+
jakarta.validation.constraints.DecimalMax.description=Must be at most ${value}
4+
jakarta.validation.constraints.DecimalMin.description=Must be at least ${value}
5+
jakarta.validation.constraints.Digits.description=Must have at most ${integer} integral digits and ${fraction} fractional digits
6+
jakarta.validation.constraints.Email.description=Must be a well-formed email address
7+
jakarta.validation.constraints.Future.description=Must be in the future
8+
jakarta.validation.constraints.FutureOrPresent.description=Must be in the future or the present
9+
jakarta.validation.constraints.Max.description=Must be at most ${value}
10+
jakarta.validation.constraints.Min.description=Must be at least ${value}
11+
jakarta.validation.constraints.Negative.description=Must be negative
12+
jakarta.validation.constraints.NegativeOrZero.description=Must be negative or zero
13+
jakarta.validation.constraints.NotBlank.description=Must not be blank
14+
jakarta.validation.constraints.NotEmpty.description=Must not be empty
15+
jakarta.validation.constraints.NotNull.description=Must not be null
16+
jakarta.validation.constraints.Null.description=Must be null
17+
jakarta.validation.constraints.Past.description=Must be in the past
18+
jakarta.validation.constraints.PastOrPresent.description=Must be in the past or the present
19+
jakarta.validation.constraints.Pattern.description=Must match the regular expression `${regexp}`
20+
jakarta.validation.constraints.Positive.description=Must be positive
21+
jakarta.validation.constraints.PositiveOrZero.description=Must be positive or zero
22+
jakarta.validation.constraints.Size.description=Size must be between ${min} and ${max} inclusive
2323
org.hibernate.validator.constraints.CodePointLength.description=Code point length must be between ${min} and ${max} inclusive
2424
org.hibernate.validator.constraints.CreditCardNumber.description=Must be a well-formed credit card number
2525
org.hibernate.validator.constraints.Currency.description=Must be in an accepted currency unit (${value})
@@ -32,5 +32,4 @@ org.hibernate.validator.constraints.Mod11Check.description=Must pass the Mod11 c
3232
org.hibernate.validator.constraints.NotBlank.description=Must not be blank
3333
org.hibernate.validator.constraints.NotEmpty.description=Must not be empty
3434
org.hibernate.validator.constraints.Range.description=Must be at least ${min} and at most ${max}
35-
org.hibernate.validator.constraints.SafeHtml.description=Must be safe HTML
3635
org.hibernate.validator.constraints.URL.description=Must be a well-formed URL

0 commit comments

Comments
 (0)