From a17e17b00abdc7dcddc5547e4c8715d43fa5e4d8 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Sun, 12 Nov 2017 12:56:45 +0000 Subject: [PATCH] Align constraints support with Hibernate Validator 6 Closes gh-454 --- build.gradle | 5 +- .../docs/asciidoc/documenting-your-api.adoc | 17 ++- spring-restdocs-core/build.gradle | 1 + ...ceBundleConstraintDescriptionResolver.java | 42 +++++-- .../DefaultConstraintDescriptions.properties | 11 ++ ...dleConstraintDescriptionResolverTests.java | 117 +++++++++++++++++- 6 files changed, 178 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 7801b871..5320758e 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ subprojects { dependency 'com.samskivert:jmustache:1.12' dependency 'commons-codec:commons-codec:1.10' dependency 'javax.servlet:javax.servlet-api:3.1.0' - dependency 'javax.validation:validation-api:1.1.0.Final' + dependency 'javax.validation:validation-api:2.0.0.Final' dependency 'junit:junit:4.12' dependency 'io.rest-assured:rest-assured:3.0.3' dependency 'org.apache.pdfbox:pdfbox:2.0.7' @@ -72,8 +72,9 @@ subprojects { dependency 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16' dependency 'org.hamcrest:hamcrest-core:1.3' dependency 'org.hamcrest:hamcrest-library:1.3' - dependency 'org.hibernate:hibernate-validator:5.4.1.Final' + dependency 'org.hibernate:hibernate-validator:6.0.4.Final' dependency 'org.jacoco:org.jacoco.agent:0.7.9' + dependency 'org.javamoney:moneta:1.1' dependency 'org.jruby:jruby-complete:9.1.13.0' dependency 'org.junit.jupiter:junit-jupiter-api:5.0.0' dependency 'org.mockito:mockito-core:1.10.19' diff --git a/docs/src/docs/asciidoc/documenting-your-api.adoc b/docs/src/docs/asciidoc/documenting-your-api.adoc index b6bb3757..770af56d 100644 --- a/docs/src/docs/asciidoc/documenting-your-api.adoc +++ b/docs/src/docs/asciidoc/documenting-your-api.adoc @@ -1131,25 +1131,37 @@ To take complete control of constraint resolution, your own implementation of [[documenting-your-api-constraints-describing]] ==== Describing constraints -Default descriptions are provided for all of the Bean Validation 1.1's constraints: +Default descriptions are provided for all of Bean Validation 2.0's constraints: * AssertFalse * AssertTrue * DecimalMax * DecimalMin * Digits +* Email * Future +* FutureOrPresent * Max * Min +* Negative +* NegativeOrZero +* NotBlank +* NotEmpty * NotNull * Null * Past +* PastOrPresent * Pattern +* Positive +* PositiveOrZero * Size -Default descriptions are also provided for constraints from Hibernate Validator: +Default descriptions are also provided for the following constraints from Hibernate +Validator: +* CodePointLength * CreditCardNumber +* Currency * EAN * Email * Length @@ -1158,6 +1170,7 @@ Default descriptions are also provided for constraints from Hibernate Validator: * Mod11Check * NotBlank * NotEmpty +* Currency * Range * SafeHtml * URL diff --git a/spring-restdocs-core/build.gradle b/spring-restdocs-core/build.gradle index c2acd0fe..c6e7a3ca 100644 --- a/spring-restdocs-core/build.gradle +++ b/spring-restdocs-core/build.gradle @@ -35,6 +35,7 @@ dependencies { optional 'junit:junit' optional 'org.hibernate:hibernate-validator' optional 'org.junit.jupiter:junit-jupiter-api' + testCompile 'org.javamoney:moneta' testCompile 'org.mockito:mockito-core' testCompile 'org.hamcrest:hamcrest-core' testCompile 'org.hamcrest:hamcrest-library' 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 c55596c3..9e66aa11 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 @@ -25,30 +25,39 @@ 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 org.hibernate.validator.constraints.CodePointLength; import org.hibernate.validator.constraints.CreditCardNumber; +import org.hibernate.validator.constraints.Currency; import org.hibernate.validator.constraints.EAN; -import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.LuhnCheck; import org.hibernate.validator.constraints.Mod10Check; import org.hibernate.validator.constraints.Mod11Check; -import org.hibernate.validator.constraints.NotBlank; -import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.SafeHtml; import org.hibernate.validator.constraints.URL; import org.springframework.util.PropertyPlaceholderHelper; import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; +import org.springframework.util.StringUtils; /** * A {@link ConstraintDescriptionResolver} that resolves constraint descriptions from a @@ -57,7 +66,7 @@ import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; * {@code javax.validation.constraints.NotNull} is * {@code javax.validation.constraints.NotNull.description}. *

- * Default descriptions are provided for Bean Validation 1.1's constraints: + * Default descriptions are provided for Bean Validation 2.0's constraints: * *

* @@ -79,15 +97,17 @@ import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; * Default descriptions are also provided for Hibernate Validator's constraints: * *