Align constraints support with Hibernate Validator 6

Closes gh-454
This commit is contained in:
Andy Wilkinson
2017-11-12 12:56:45 +00:00
parent ac1d8ec4ac
commit a17e17b00a
6 changed files with 178 additions and 15 deletions

View File

@@ -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}.
* <p>
* Default descriptions are provided for Bean Validation 1.1's constraints:
* Default descriptions are provided for Bean Validation 2.0's constraints:
*
* <ul>
* <li>{@link AssertFalse}
@@ -65,13 +74,22 @@ import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver;
* <li>{@link DecimalMax}
* <li>{@link DecimalMin}
* <li>{@link Digits}
* <li>{@link Email}
* <li>{@link Future}
* <li>{@link FutureOrPresent}
* <li>{@link Max}
* <li>{@link Min}
* <li>{@link Negative}
* <li>{@link NegativeOrZero}
* <li>{@link NotBlank}
* <li>{@link NotEmpty}
* <li>{@link NotNull}
* <li>{@link Null}
* <li>{@link Past}
* <li>{@link PastOrPresent}
* <li>{@link Pattern}
* <li>{@link Positive}
* <li>{@link PositiveOrZero}
* <li>{@link Size}
* </ul>
*
@@ -79,15 +97,17 @@ import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver;
* Default descriptions are also provided for Hibernate Validator's constraints:
*
* <ul>
* <li>{@link CodePointLength}
* <li>{@link CreditCardNumber}
* <li>{@link Currency}
* <li>{@link EAN}
* <li>{@link Email}
* <li>{@link org.hibernate.validator.constraints.Email}
* <li>{@link Length}
* <li>{@link LuhnCheck}
* <li>{@link Mod10Check}
* <li>{@link Mod11Check}
* <li>{@link NotBlank}
* <li>{@link NotEmpty}
* <li>{@link org.hibernate.validator.constraints.NotBlank}
* <li>{@link org.hibernate.validator.constraints.NotEmpty}
* <li>{@link Range}
* <li>{@link SafeHtml}
* <li>{@link URL}
@@ -169,7 +189,13 @@ public class ResourceBundleConstraintDescriptionResolver
@Override
public String resolvePlaceholder(String placeholderName) {
Object replacement = this.constraint.getConfiguration().get(placeholderName);
return replacement != null ? replacement.toString() : null;
if (replacement == null) {
return null;
}
if (replacement.getClass().isArray()) {
return StringUtils.arrayToDelimitedString((Object[]) replacement, ", ");
}
return replacement.toString();
}
}

View File

@@ -3,15 +3,26 @@ 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
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})
org.hibernate.validator.constraints.EAN.description=Must be a well-formed ${type} number
org.hibernate.validator.constraints.Email.description=Must be a well-formed email address
org.hibernate.validator.constraints.Length.description=Length must be between ${min} and ${max} inclusive