diff --git a/build.gradle b/build.gradle index 7ce90aab..54c88ef6 100644 --- a/build.gradle +++ b/build.gradle @@ -25,10 +25,10 @@ nohttp { } ext { - springVersion = "5.0.15.RELEASE" + springFrameworkVersion = "6.0.0-SNAPSHOT" javadocLinks = [ "https://docs.oracle.com/javase/8/docs/api/", - "https://docs.spring.io/spring-framework/docs/$springVersion/javadoc-api/", + "https://docs.spring.io/spring-framework/docs/$springFrameworkVersion/javadoc-api/", "https://docs.jboss.org/hibernate/stable/beanvalidation/api/", "https://docs.jboss.org/hibernate/stable/validator/api/" ] as String[] diff --git a/docs/build.gradle b/docs/build.gradle index 152468dd..f4367407 100644 --- a/docs/build.gradle +++ b/docs/build.gradle @@ -16,13 +16,13 @@ dependencies { asciidoctorExt("io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch:0.5.0") internal(platform(project(":spring-restdocs-platform"))) - internal(enforcedPlatform("org.springframework:spring-framework-bom:5.3.8")) + internal(enforcedPlatform("org.springframework:spring-framework-bom:$springFrameworkVersion")) testImplementation(project(":spring-restdocs-mockmvc")) testImplementation(project(":spring-restdocs-restassured")) testImplementation(project(":spring-restdocs-webtestclient")) testImplementation("io.rest-assured:rest-assured") - testImplementation("javax.validation:validation-api") + testImplementation("jakarta.validation:jakarta.validation-api") testImplementation("junit:junit") testImplementation("org.testng:testng:6.9.10") testImplementation("org.junit.jupiter:junit-jupiter-api") diff --git a/docs/src/docs/asciidoc/documenting-your-api.adoc b/docs/src/docs/asciidoc/documenting-your-api.adoc index 306382f8..c4a68fab 100644 --- a/docs/src/docs/asciidoc/documenting-your-api.adoc +++ b/docs/src/docs/asciidoc/documenting-your-api.adoc @@ -1252,7 +1252,7 @@ example of such a resource bundle]. Each key in the resource bundle is the fully-qualified name of a constraint plus a `.description`. For example, the key for the standard `@NotNull` constraint is -`javax.validation.constraints.NotNull.description`. +`jakarta.validation.constraints.NotNull.description`. You can use a property placeholder referring to a constraint's attributes in its 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 === Using Parameterized Output Directories When using MockMvc, REST Assured, or `WebTestClient` you can parameterize the output directory used by -`document`. Parameterizing output with `WebTestClient` requires Spring Framework 5.3.5 or later. +`document`. The following parameters are supported: diff --git a/docs/src/docs/asciidoc/getting-started.adoc b/docs/src/docs/asciidoc/getting-started.adoc index 8227b94e..8ae2279a 100644 --- a/docs/src/docs/asciidoc/getting-started.adoc +++ b/docs/src/docs/asciidoc/getting-started.adoc @@ -77,7 +77,7 @@ If you want to jump straight in, a number of sample applications are available: Spring REST Docs has the following minimum requirements: * Java 17 -* Spring Framework 5 (5.0.2 or later) +* Spring Framework 6 Additionally, the `spring-restdocs-restassured` module requires REST Assured 4 (4.4 or later). diff --git a/docs/src/test/java/com/example/Constraints.java b/docs/src/test/java/com/example/Constraints.java index 64912874..6d8ef1fc 100644 --- a/docs/src/test/java/com/example/Constraints.java +++ b/docs/src/test/java/com/example/Constraints.java @@ -18,8 +18,8 @@ package com.example; import java.util.List; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import org.springframework.restdocs.constraints.ConstraintDescriptions; diff --git a/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java index 5955934b..0416f6a8 100644 --- a/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java +++ b/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java @@ -38,7 +38,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; import org.junit.Before; import org.junit.Rule; diff --git a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java index bbcc9a3f..746f3c51 100644 --- a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java +++ b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java @@ -37,7 +37,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; import org.junit.Before; import org.junit.Rule; diff --git a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/ExceptionSupressingErrorAttributes.java b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/ExceptionSupressingErrorAttributes.java index d7725a51..8da9b419 100644 --- a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/ExceptionSupressingErrorAttributes.java +++ b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/ExceptionSupressingErrorAttributes.java @@ -32,7 +32,7 @@ class ExceptionSupressingErrorAttributes extends DefaultErrorAttributes { ErrorAttributeOptions options) { Map errorAttributes = super.getErrorAttributes(webRequest, options); errorAttributes.remove("exception"); - Object message = webRequest.getAttribute("javax.servlet.error.message", RequestAttributes.SCOPE_REQUEST); + Object message = webRequest.getAttribute("jakarta.servlet.error.message", RequestAttributes.SCOPE_REQUEST); if (message != null) { errorAttributes.put("message", message); } diff --git a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NoteInput.java b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NoteInput.java index d5fd5c86..48975e02 100644 --- a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NoteInput.java +++ b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NoteInput.java @@ -20,7 +20,7 @@ import java.net.URI; import java.util.Collections; import java.util.List; -import javax.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NullOrNotBlank.java b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NullOrNotBlank.java index 23dbbd45..661f6fae 100644 --- a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NullOrNotBlank.java +++ b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/NullOrNotBlank.java @@ -21,10 +21,10 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.validation.Constraint; -import javax.validation.Payload; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Null; +import jakarta.validation.Constraint; +import jakarta.validation.Payload; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Null; import org.hibernate.validator.constraints.CompositionType; import org.hibernate.validator.constraints.ConstraintComposition; diff --git a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/RestNotesControllerAdvice.java b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/RestNotesControllerAdvice.java index bef998e2..750e21ca 100644 --- a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/RestNotesControllerAdvice.java +++ b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/RestNotesControllerAdvice.java @@ -18,8 +18,8 @@ package com.example.notes; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; diff --git a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/TagInput.java b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/TagInput.java index bc9b397a..d10f25fa 100644 --- a/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/TagInput.java +++ b/samples/rest-notes-spring-hateoas/src/main/java/com/example/notes/TagInput.java @@ -16,7 +16,7 @@ package com.example.notes; -import javax.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java index 17cebdb1..c3e96b51 100644 --- a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java +++ b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java @@ -42,7 +42,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; import org.junit.Before; import org.junit.Rule; diff --git a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/NullOrNotBlankTests.java b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/NullOrNotBlankTests.java index a7086e72..8b9f1c9a 100644 --- a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/NullOrNotBlankTests.java +++ b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/NullOrNotBlankTests.java @@ -20,9 +20,9 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; import org.junit.Test; diff --git a/spring-restdocs-core/build.gradle b/spring-restdocs-core/build.gradle index 3b67df29..9cbfd184 100644 --- a/spring-restdocs-core/build.gradle +++ b/spring-restdocs-core/build.gradle @@ -46,11 +46,11 @@ dependencies { optional(platform(project(":spring-restdocs-platform"))) optional("commons-codec:commons-codec") - optional("javax.validation:validation-api") + optional("jakarta.validation:jakarta.validation-api") optional("junit:junit") optional("org.hibernate.validator:hibernate-validator") optional("org.junit.jupiter:junit-jupiter-api") - + testFixturesApi(platform(project(":spring-restdocs-platform"))) testFixturesApi("junit:junit") testFixturesApi("org.assertj:assertj-core") @@ -68,7 +68,7 @@ dependencies { testImplementation("org.hamcrest:hamcrest-library") testImplementation("org.springframework:spring-test") - testRuntimeOnly("org.glassfish:javax.el:3.0.0") + testRuntimeOnly("org.glassfish:jakarta.el:4.0.2") } jar { @@ -85,10 +85,3 @@ components.java.withVariantsFromConfiguration(configurations.testFixturesApiElem components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) { skip() } - -compatibilityTest { - dependency("Spring Framework") { springFramework -> - springFramework.groupId = "org.springframework" - springFramework.versions = ["5.1.+", "5.2.+", "5.3.+"] - } -} diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java index 46fcfe92..e7fff063 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java @@ -20,29 +20,28 @@ import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; -import javax.validation.constraints.AssertFalse; -import javax.validation.constraints.AssertTrue; -import javax.validation.constraints.DecimalMax; -import javax.validation.constraints.DecimalMin; -import javax.validation.constraints.Digits; -import javax.validation.constraints.Email; -import javax.validation.constraints.Future; -import javax.validation.constraints.FutureOrPresent; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.Negative; -import javax.validation.constraints.NegativeOrZero; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Null; -import javax.validation.constraints.Past; -import javax.validation.constraints.PastOrPresent; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Positive; -import javax.validation.constraints.PositiveOrZero; -import javax.validation.constraints.Size; - +import jakarta.validation.constraints.AssertFalse; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Future; +import jakarta.validation.constraints.FutureOrPresent; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Negative; +import jakarta.validation.constraints.NegativeOrZero; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Null; +import jakarta.validation.constraints.Past; +import jakarta.validation.constraints.PastOrPresent; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.PositiveOrZero; +import jakarta.validation.constraints.Size; import org.hibernate.validator.constraints.CodePointLength; import org.hibernate.validator.constraints.CreditCardNumber; import org.hibernate.validator.constraints.Currency; @@ -52,7 +51,6 @@ import org.hibernate.validator.constraints.LuhnCheck; import org.hibernate.validator.constraints.Mod10Check; import org.hibernate.validator.constraints.Mod11Check; import org.hibernate.validator.constraints.Range; -import org.hibernate.validator.constraints.SafeHtml; import org.hibernate.validator.constraints.URL; import org.springframework.util.PropertyPlaceholderHelper; @@ -63,8 +61,8 @@ import org.springframework.util.StringUtils; * A {@link ConstraintDescriptionResolver} that resolves constraint descriptions from a * {@link ResourceBundle}. The resource bundle's keys are the name of the constraint with * {@code .description} appended. For example, the key for the constraint named - * {@code javax.validation.constraints.NotNull} is - * {@code javax.validation.constraints.NotNull.description}. + * {@code jakarta.validation.constraints.NotNull} is + * {@code jakarta.validation.constraints.NotNull.description}. *

* Default descriptions are provided for Bean Validation 2.0's constraints: * @@ -109,7 +107,6 @@ import org.springframework.util.StringUtils; *

  • {@link org.hibernate.validator.constraints.NotBlank} *
  • {@link org.hibernate.validator.constraints.NotEmpty} *
  • {@link Range} - *
  • {@link SafeHtml} *
  • {@link URL} * * diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java index e8e9fecb..28910a93 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java @@ -19,19 +19,19 @@ package org.springframework.restdocs.constraints; import java.util.ArrayList; import java.util.List; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; -import javax.validation.constraints.NotNull; -import javax.validation.metadata.BeanDescriptor; -import javax.validation.metadata.ConstraintDescriptor; -import javax.validation.metadata.PropertyDescriptor; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.metadata.BeanDescriptor; +import jakarta.validation.metadata.ConstraintDescriptor; +import jakarta.validation.metadata.PropertyDescriptor; /** * A {@link ConstraintResolver} that uses a Bean Validation {@link Validator} to resolve * constraints. The name of the constraint is the fully-qualified class name of the * constraint annotation. For example, a {@link NotNull} constraint will be named - * {@code javax.validation.constraints.NotNull}. + * {@code jakarta.validation.constraints.NotNull}. * * @author Andy Wilkinson * diff --git a/spring-restdocs-core/src/main/resources/org/springframework/restdocs/constraints/DefaultConstraintDescriptions.properties b/spring-restdocs-core/src/main/resources/org/springframework/restdocs/constraints/DefaultConstraintDescriptions.properties index ce699e09..248cb238 100644 --- a/spring-restdocs-core/src/main/resources/org/springframework/restdocs/constraints/DefaultConstraintDescriptions.properties +++ b/spring-restdocs-core/src/main/resources/org/springframework/restdocs/constraints/DefaultConstraintDescriptions.properties @@ -1,25 +1,25 @@ -javax.validation.constraints.AssertFalse.description=Must be false -javax.validation.constraints.AssertTrue.description=Must be true -javax.validation.constraints.DecimalMax.description=Must be at most ${value} -javax.validation.constraints.DecimalMin.description=Must be at least ${value} -javax.validation.constraints.Digits.description=Must have at most ${integer} integral digits and ${fraction} fractional digits -javax.validation.constraints.Email.description=Must be a well-formed email address -javax.validation.constraints.Future.description=Must be in the future -javax.validation.constraints.FutureOrPresent.description=Must be in the future or the present -javax.validation.constraints.Max.description=Must be at most ${value} -javax.validation.constraints.Min.description=Must be at least ${value} -javax.validation.constraints.Negative.description=Must be negative -javax.validation.constraints.NegativeOrZero.description=Must be negative or zero -javax.validation.constraints.NotBlank.description=Must not be blank -javax.validation.constraints.NotEmpty.description=Must not be empty -javax.validation.constraints.NotNull.description=Must not be null -javax.validation.constraints.Null.description=Must be null -javax.validation.constraints.Past.description=Must be in the past -javax.validation.constraints.PastOrPresent.description=Must be in the past or the present -javax.validation.constraints.Pattern.description=Must match the regular expression `${regexp}` -javax.validation.constraints.Positive.description=Must be positive -javax.validation.constraints.PositiveOrZero.description=Must be positive or zero -javax.validation.constraints.Size.description=Size must be between ${min} and ${max} inclusive +jakarta.validation.constraints.AssertFalse.description=Must be false +jakarta.validation.constraints.AssertTrue.description=Must be true +jakarta.validation.constraints.DecimalMax.description=Must be at most ${value} +jakarta.validation.constraints.DecimalMin.description=Must be at least ${value} +jakarta.validation.constraints.Digits.description=Must have at most ${integer} integral digits and ${fraction} fractional digits +jakarta.validation.constraints.Email.description=Must be a well-formed email address +jakarta.validation.constraints.Future.description=Must be in the future +jakarta.validation.constraints.FutureOrPresent.description=Must be in the future or the present +jakarta.validation.constraints.Max.description=Must be at most ${value} +jakarta.validation.constraints.Min.description=Must be at least ${value} +jakarta.validation.constraints.Negative.description=Must be negative +jakarta.validation.constraints.NegativeOrZero.description=Must be negative or zero +jakarta.validation.constraints.NotBlank.description=Must not be blank +jakarta.validation.constraints.NotEmpty.description=Must not be empty +jakarta.validation.constraints.NotNull.description=Must not be null +jakarta.validation.constraints.Null.description=Must be null +jakarta.validation.constraints.Past.description=Must be in the past +jakarta.validation.constraints.PastOrPresent.description=Must be in the past or the present +jakarta.validation.constraints.Pattern.description=Must match the regular expression `${regexp}` +jakarta.validation.constraints.Positive.description=Must be positive +jakarta.validation.constraints.PositiveOrZero.description=Must be positive or zero +jakarta.validation.constraints.Size.description=Size must be between ${min} and ${max} inclusive org.hibernate.validator.constraints.CodePointLength.description=Code point length must be between ${min} and ${max} inclusive org.hibernate.validator.constraints.CreditCardNumber.description=Must be a well-formed credit card number 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 org.hibernate.validator.constraints.NotBlank.description=Must not be blank org.hibernate.validator.constraints.NotEmpty.description=Must not be empty org.hibernate.validator.constraints.Range.description=Must be at least ${min} and at most ${max} -org.hibernate.validator.constraints.SafeHtml.description=Must be safe HTML org.hibernate.validator.constraints.URL.description=Must be a well-formed URL \ No newline at end of file diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java index f5003061..e3dfd56e 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java @@ -26,29 +26,29 @@ import java.util.ListResourceBundle; import java.util.ResourceBundle; import javax.money.MonetaryAmount; -import javax.validation.constraints.AssertFalse; -import javax.validation.constraints.AssertTrue; -import javax.validation.constraints.DecimalMax; -import javax.validation.constraints.DecimalMin; -import javax.validation.constraints.Digits; -import javax.validation.constraints.Email; -import javax.validation.constraints.Future; -import javax.validation.constraints.FutureOrPresent; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.Negative; -import javax.validation.constraints.NegativeOrZero; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Null; -import javax.validation.constraints.Past; -import javax.validation.constraints.PastOrPresent; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Positive; -import javax.validation.constraints.PositiveOrZero; -import javax.validation.constraints.Size; +import jakarta.validation.constraints.AssertFalse; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Future; +import jakarta.validation.constraints.FutureOrPresent; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Negative; +import jakarta.validation.constraints.NegativeOrZero; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Null; +import jakarta.validation.constraints.Past; +import jakarta.validation.constraints.PastOrPresent; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.PositiveOrZero; +import jakarta.validation.constraints.Size; import org.hibernate.validator.constraints.CodePointLength; import org.hibernate.validator.constraints.CreditCardNumber; import org.hibernate.validator.constraints.Currency; @@ -58,7 +58,6 @@ import org.hibernate.validator.constraints.LuhnCheck; import org.hibernate.validator.constraints.Mod10Check; import org.hibernate.validator.constraints.Mod11Check; import org.hibernate.validator.constraints.Range; -import org.hibernate.validator.constraints.SafeHtml; import org.junit.Test; import org.springframework.core.annotation.AnnotationUtils; @@ -253,11 +252,6 @@ public class ResourceBundleConstraintDescriptionResolverTests { assertThat(constraintDescriptionForField("range")).isEqualTo("Must be at least 10 and at most 100"); } - @Test - public void defaultMessageSafeHtml() { - assertThat(constraintDescriptionForField("safeHtml")).isEqualTo("Must be safe HTML"); - } - @Test public void defaultMessageUrl() { assertThat(constraintDescriptionForField("url")).isEqualTo("Must be a well-formed URL"); @@ -423,9 +417,6 @@ public class ResourceBundleConstraintDescriptionResolverTests { @Range(min = 10, max = 100) private int range; - @SafeHtml - private String safeHtml; - @org.hibernate.validator.constraints.URL private String url; diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java index 1106f842..3794a6c4 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java @@ -26,12 +26,11 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import javax.validation.Payload; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Null; -import javax.validation.constraints.Size; - +import jakarta.validation.Payload; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Null; +import jakarta.validation.constraints.Size; import org.assertj.core.api.Condition; import org.assertj.core.description.TextDescription; import org.hibernate.validator.constraints.CompositionType; @@ -102,7 +101,7 @@ public class ValidatorConstraintResolverTests { @NotBlank @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) - @javax.validation.Constraint(validatedBy = {}) + @jakarta.validation.Constraint(validatedBy = {}) private @interface CompositeConstraint { String message() default "Must be null or not blank"; diff --git a/spring-restdocs-core/src/test/resources/org/springframework/restdocs/constraints/TestConstraintDescriptions.properties b/spring-restdocs-core/src/test/resources/org/springframework/restdocs/constraints/TestConstraintDescriptions.properties index ea0f3a91..b7150793 100644 --- a/spring-restdocs-core/src/test/resources/org/springframework/restdocs/constraints/TestConstraintDescriptions.properties +++ b/spring-restdocs-core/src/test/resources/org/springframework/restdocs/constraints/TestConstraintDescriptions.properties @@ -1 +1 @@ -javax.validation.constraints.NotNull.description=Should not be null \ No newline at end of file +jakarta.validation.constraints.NotNull.description=Should not be null \ No newline at end of file diff --git a/spring-restdocs-mockmvc/build.gradle b/spring-restdocs-mockmvc/build.gradle index e6c1f35d..a0381c8a 100644 --- a/spring-restdocs-mockmvc/build.gradle +++ b/spring-restdocs-mockmvc/build.gradle @@ -12,7 +12,7 @@ dependencies { api("org.springframework:spring-webmvc") api("org.springframework:spring-test") - implementation("javax.servlet:javax.servlet-api") + implementation("jakarta.servlet:jakarta.servlet-api") internal(platform(project(":spring-restdocs-platform"))) @@ -25,10 +25,3 @@ dependencies { testRuntimeOnly("commons-logging:commons-logging:1.2") } - -compatibilityTest { - dependency("Spring Framework") { springFramework -> - springFramework.groupId = "org.springframework" - springFramework.versions = ["5.1.+", "5.2.+", "5.3.+"] - } -} diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverter.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverter.java index a456e252..2ab8fcd8 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverter.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverter.java @@ -26,8 +26,8 @@ import java.util.Collections; import java.util.List; import java.util.Map.Entry; -import javax.servlet.ServletException; -import javax.servlet.http.Part; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.Part; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -89,7 +89,7 @@ class MockMvcRequestConverter implements RequestConverter cookies = new ArrayList<>(); - for (javax.servlet.http.Cookie servletCookie : mockRequest.getCookies()) { + for (jakarta.servlet.http.Cookie servletCookie : mockRequest.getCookies()) { cookies.add(new RequestCookie(servletCookie.getName(), servletCookie.getValue())); } headers.remove(HttpHeaders.COOKIE); diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverter.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverter.java index 93e6b1f4..db0adc71 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverter.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverter.java @@ -16,7 +16,7 @@ package org.springframework.restdocs.mockmvc; -import javax.servlet.http.Cookie; +import jakarta.servlet.http.Cookie; import org.springframework.http.HttpHeaders; import org.springframework.mock.web.MockHttpServletResponse; diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverterTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverterTests.java index ca2028c1..78bb536a 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverterTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRequestConverterTests.java @@ -21,8 +21,7 @@ import java.net.URI; import java.util.Arrays; import java.util.Iterator; -import javax.servlet.http.Part; - +import jakarta.servlet.http.Part; import org.junit.Test; import org.springframework.http.HttpMethod; @@ -85,8 +84,8 @@ public class MockMvcRequestConverterTests { @Test public void requestWithCookies() throws Exception { OperationRequest request = createOperationRequest( - MockMvcRequestBuilders.get("/foo").cookie(new javax.servlet.http.Cookie("cookieName1", "cookieVal1"), - new javax.servlet.http.Cookie("cookieName2", "cookieVal2"))); + MockMvcRequestBuilders.get("/foo").cookie(new jakarta.servlet.http.Cookie("cookieName1", "cookieVal1"), + new jakarta.servlet.http.Cookie("cookieName2", "cookieVal2"))); assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo")); assertThat(request.getMethod()).isEqualTo(HttpMethod.GET); assertThat(request.getCookies().size()).isEqualTo(2); diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverterTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverterTests.java index ef9b85c2..4928a3fe 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverterTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcResponseConverterTests.java @@ -18,9 +18,8 @@ package org.springframework.restdocs.mockmvc; import java.util.Collections; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import org.junit.Test; import org.springframework.http.HttpHeaders; diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java index c970a0ac..9b425dbd 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java @@ -31,9 +31,8 @@ import java.util.Map; import java.util.Set; import java.util.regex.Pattern; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import org.assertj.core.api.Condition; import org.junit.After; import org.junit.Before; diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java index 53a12c11..53caf0ed 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java @@ -18,8 +18,7 @@ package org.springframework.restdocs.mockmvc; import java.net.URI; -import javax.servlet.ServletContext; - +import jakarta.servlet.ServletContext; import org.junit.Test; import org.springframework.http.HttpMethod; diff --git a/spring-restdocs-platform/build.gradle b/spring-restdocs-platform/build.gradle index 4d04aa5f..7c411813 100644 --- a/spring-restdocs-platform/build.gradle +++ b/spring-restdocs-platform/build.gradle @@ -11,8 +11,8 @@ dependencies { api("com.fasterxml.jackson.core:jackson-databind:2.9.5") api("com.samskivert:jmustache:$jmustacheVersion") api("commons-codec:commons-codec:1.10") - api("javax.servlet:javax.servlet-api:3.1.0") - api("javax.validation:validation-api:2.0.0.Final") + api("jakarta.servlet:jakarta.servlet-api:5.0.0") + api("jakarta.validation:jakarta.validation-api:3.0.0") api("junit:junit:4.12") api("io.rest-assured:rest-assured:4.4.0") api("org.apache.pdfbox:pdfbox:2.0.7") @@ -21,14 +21,13 @@ dependencies { api("org.assertj:assertj-core:3.11.1") api("org.hamcrest:hamcrest-core:1.3") api("org.hamcrest:hamcrest-library:1.3") - api("org.hibernate.validator:hibernate-validator:6.0.9.Final") + api("org.hibernate.validator:hibernate-validator:7.0.0.Final") api("org.jacoco:org.jacoco.agent:0.7.9") api("org.javamoney:moneta:1.1") api("org.jruby:jruby-complete:9.1.13.0") api("org.junit.jupiter:junit-jupiter-api:5.0.0") api("org.mockito:mockito-core:1.10.19") api("org.springframework.hateoas:spring-hateoas:0.23.0.RELEASE") - api("org.synchronoss.cloud:nio-multipart-parser:1.1.0") } - api(enforcedPlatform("org.springframework:spring-framework-bom:$springVersion")) + api(enforcedPlatform("org.springframework:spring-framework-bom:$springFrameworkVersion")) } diff --git a/spring-restdocs-restassured/build.gradle b/spring-restdocs-restassured/build.gradle index 26eee409..bd817465 100644 --- a/spring-restdocs-restassured/build.gradle +++ b/spring-restdocs-restassured/build.gradle @@ -16,7 +16,7 @@ dependencies { testImplementation(testFixtures(project(":spring-restdocs-core"))) testImplementation("com.fasterxml.jackson.core:jackson-databind") testImplementation("junit:junit") - testImplementation("org.apache.tomcat.embed:tomcat-embed-core:8.5.13") + testImplementation("org.apache.tomcat.embed:tomcat-embed-core:10.0.11") testImplementation("org.assertj:assertj-core") testImplementation("org.hamcrest:hamcrest-library") testImplementation("org.mockito:mockito-core") diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java index 7ff46f28..760884c7 100644 --- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java +++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java @@ -248,8 +248,9 @@ public class RestAssuredRestDocumentationIntegrationTests { assertExpectedSnippetFilesExist(new File("build/generated-snippets/set-cookie"), "http-request.adoc", "http-response.adoc", "curl-request.adoc"); assertThat(new File("build/generated-snippets/set-cookie/http-response.adoc")) - .has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK).header(HttpHeaders.SET_COOKIE, - "name=value; Domain=localhost; HttpOnly"))); + .has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK) + .header(HttpHeaders.SET_COOKIE, "name=value; Domain=localhost; HttpOnly") + .header("Keep-Alive", "timeout=60").header("Connection", "keep-alive"))); } @Test @@ -307,7 +308,8 @@ public class RestAssuredRestDocumentationIntegrationTests { assertThat(new File("build/generated-snippets/preprocessed-response/http-response.adoc")) .has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK) .header("Foo", "https://api.example.com/foo/bar") - .header("Content-Type", "application/json;charset=UTF-8") + .header("Content-Type", "application/json;charset=UTF-8").header("Keep-Alive", "timeout=60") + .header("Connection", "keep-alive") .header(HttpHeaders.CONTENT_LENGTH, prettyPrinted.getBytes().length).content(prettyPrinted))); } @@ -326,7 +328,8 @@ public class RestAssuredRestDocumentationIntegrationTests { assertThat(new File("build/generated-snippets/default-preprocessed-response/http-response.adoc")) .has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK) .header("Foo", "https://api.example.com/foo/bar") - .header("Content-Type", "application/json;charset=UTF-8") + .header("Content-Type", "application/json;charset=UTF-8").header("Keep-Alive", "timeout=60") + .header("Connection", "keep-alive") .header(HttpHeaders.CONTENT_LENGTH, prettyPrinted.getBytes().length).content(prettyPrinted))); } diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/TomcatServer.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/TomcatServer.java index f52618b0..83f9b15a 100644 --- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/TomcatServer.java +++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/TomcatServer.java @@ -21,14 +21,13 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import javax.servlet.ServletException; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; diff --git a/spring-restdocs-webtestclient/build.gradle b/spring-restdocs-webtestclient/build.gradle index 676e3792..0cc8851b 100644 --- a/spring-restdocs-webtestclient/build.gradle +++ b/spring-restdocs-webtestclient/build.gradle @@ -20,18 +20,4 @@ dependencies { testImplementation("org.mockito:mockito-core") testRuntimeOnly("org.springframework:spring-context") - testRuntimeOnly("org.synchronoss.cloud:nio-multipart-parser") -} - -compatibilityTest { - dependency("Spring Framework") { springFramework -> - springFramework.groupId = "org.springframework" - springFramework.versions = ["5.1.+", "5.2.+", "5.3.+"] - } -} - -project.afterEvaluate { - configurations.getByName("testRuntimeClasspath_spring_framework_5.3.+") { - exclude group: "org.synchronoss.cloud", module: "nio-multipart-parser" - } } diff --git a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java index 84bf6370..4afabb82 100644 --- a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java +++ b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java @@ -34,10 +34,10 @@ import org.springframework.http.MediaType; import org.springframework.http.ReactiveHttpInputMessage; import org.springframework.http.codec.FormHttpMessageReader; import org.springframework.http.codec.HttpMessageReader; +import org.springframework.http.codec.multipart.DefaultPartHttpMessageReader; import org.springframework.http.codec.multipart.FilePart; import org.springframework.http.codec.multipart.MultipartHttpMessageReader; import org.springframework.http.codec.multipart.Part; -import org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader; import org.springframework.restdocs.operation.OperationRequest; import org.springframework.restdocs.operation.OperationRequestFactory; import org.springframework.restdocs.operation.OperationRequestPart; @@ -48,7 +48,6 @@ import org.springframework.restdocs.operation.RequestConverter; import org.springframework.restdocs.operation.RequestCookie; import org.springframework.test.web.reactive.server.ExchangeResult; import org.springframework.test.web.reactive.server.WebTestClient; -import org.springframework.util.ClassUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -60,8 +59,6 @@ import org.springframework.util.MultiValueMap; */ class WebTestClientRequestConverter implements RequestConverter { - private static final String DEFAULT_PART_HTTP_MESSAGE_READER = "org.springframework.http.codec.multipart.DefaultPartHttpMessageReader"; - private static final ResolvableType FORM_DATA_TYPE = ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, String.class); @@ -94,10 +91,7 @@ class WebTestClientRequestConverter implements RequestConverter } private List extractRequestParts(ExchangeResult result) { - HttpMessageReader partHttpMessageReader = findPartHttpMessageReader(); - if (partHttpMessageReader == null) { - return Collections.emptyList(); - } + HttpMessageReader partHttpMessageReader = new DefaultPartHttpMessageReader(); return new MultipartHttpMessageReader(partHttpMessageReader) .readMono(ResolvableType.forClass(Part.class), new ExchangeResultReactiveHttpInputMessage(result), Collections.emptyMap()) @@ -105,25 +99,6 @@ class WebTestClientRequestConverter implements RequestConverter .flatMap((parts) -> parts.stream().map(this::createOperationRequestPart)).collect(Collectors.toList()); } - @SuppressWarnings("unchecked") - private HttpMessageReader findPartHttpMessageReader() { - if (ClassUtils.isPresent(DEFAULT_PART_HTTP_MESSAGE_READER, getClass().getClassLoader())) { - try { - return (HttpMessageReader) Class - .forName(DEFAULT_PART_HTTP_MESSAGE_READER, true, getClass().getClassLoader()) - .getDeclaredConstructor().newInstance(); - } - catch (Exception ex) { - // Continue - } - } - if (ClassUtils.isPresent("org.synchronoss.cloud.nio.multipart.NioMultipartParserListener", - getClass().getClassLoader())) { - return new SynchronossPartHttpMessageReader(); - } - return null; - } - private OperationRequestPart createOperationRequestPart(Part part) { ByteArrayOutputStream content = readPartBodyContent(part); return new OperationRequestPartFactory().create(part.name(), diff --git a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationConfigurer.java b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationConfigurer.java index e6d5299d..fb3f4d50 100644 --- a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationConfigurer.java +++ b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationConfigurer.java @@ -94,7 +94,7 @@ public class WebTestClientRestDocumentationConfigurer extends private ClientRequest applyUriDefaults(ClientRequest request) { URI requestUri = request.url(); - if (!StringUtils.isEmpty(requestUri.getHost())) { + if (StringUtils.hasLength(requestUri.getHost())) { return request; } try { diff --git a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientResponseConverterTests.java b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientResponseConverterTests.java index 18e04004..ce3dfdf6 100644 --- a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientResponseConverterTests.java +++ b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientResponseConverterTests.java @@ -46,7 +46,7 @@ public class WebTestClientResponseConverterTests { public void basicResponse() { ExchangeResult result = WebTestClient .bindToRouterFunction( - RouterFunctions.route(GET("/foo"), (req) -> ServerResponse.ok().syncBody("Hello, World!"))) + RouterFunctions.route(GET("/foo"), (req) -> ServerResponse.ok().bodyValue("Hello, World!"))) .configureClient().baseUrl("http://localhost").build().get().uri("/foo").exchange().expectBody() .returnResult(); OperationResponse response = this.converter.convert(result); diff --git a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationIntegrationTests.java b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationIntegrationTests.java index b7a653d2..89efdcc9 100644 --- a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationIntegrationTests.java +++ b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRestDocumentationIntegrationTests.java @@ -68,7 +68,7 @@ import static org.springframework.restdocs.request.RequestDocumentation.requestP import static org.springframework.restdocs.request.RequestDocumentation.requestParts; import static org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation.document; import static org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation.documentationConfiguration; -import static org.springframework.web.reactive.function.BodyInserters.fromObject; +import static org.springframework.web.reactive.function.BodyInserters.fromValue; /** * Integration tests for using Spring REST Docs with Spring Framework's WebTestClient. @@ -86,9 +86,9 @@ public class WebTestClientRestDocumentationIntegrationTests { public void setUp() { RouterFunction route = RouterFunctions .route(RequestPredicates.GET("/"), - (request) -> ServerResponse.status(HttpStatus.OK).body(fromObject(new Person("Jane", "Doe")))) + (request) -> ServerResponse.status(HttpStatus.OK).body(fromValue(new Person("Jane", "Doe")))) .andRoute(RequestPredicates.GET("/{foo}/{bar}"), - (request) -> ServerResponse.status(HttpStatus.OK).body(fromObject(new Person("Jane", "Doe")))) + (request) -> ServerResponse.status(HttpStatus.OK).body(fromValue(new Person("Jane", "Doe")))) .andRoute(RequestPredicates.POST("/upload"), (request) -> request.body(BodyExtractors.toMultipartData()) .map((parts) -> ServerResponse.status(HttpStatus.OK).build().block()))