BV2: constraint/validator updates
Project: http://git-wip-us.apache.org/repos/asf/bval/repo Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/40fc20f6 Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/40fc20f6 Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/40fc20f6 Branch: refs/heads/bv2 Commit: 40fc20f6fb1b6585e101ceec66dc44e459d898ae Parents: a602e41 Author: Matt Benson <[email protected]> Authored: Wed Feb 21 14:38:00 2018 -0600 Committer: Matt Benson <[email protected]> Committed: Wed Feb 21 14:59:56 2018 -0600 ---------------------------------------------------------------------- .../constraints/checkdigit/ABANumber.java | 4 +- .../extras/constraints/checkdigit/CUSIP.java | 4 +- .../extras/constraints/checkdigit/EAN13.java | 4 +- .../extras/constraints/checkdigit/IBAN.java | 4 +- .../constraints/checkdigit/IBANValidator.java | 8 +- .../extras/constraints/checkdigit/ISBN10.java | 4 +- .../extras/constraints/checkdigit/Luhn.java | 4 +- .../checkdigit/ModulusValidator.java | 4 +- .../extras/constraints/checkdigit/Sedol.java | 4 +- .../extras/constraints/checkdigit/Verhoeff.java | 4 +- .../checkdigit/VerhoeffValidator.java | 4 +- .../constraints/creditcard/AmericanExpress.java | 4 +- .../extras/constraints/creditcard/Diners.java | 4 +- .../extras/constraints/creditcard/Discover.java | 4 +- .../constraints/creditcard/Mastercard.java | 4 +- .../constraints/file/DirectoryValidator.java | 2 +- .../constraints/file/SymlinkValidator.java | 2 +- .../extras/constraints/net/DomainValidator.java | 33 +++-- .../constraints/net/InetAddressValidator.java | 4 +- .../checkdigit/ABANumberValidatorTest.java | 2 +- .../checkdigit/AbstractCheckDigitTest.java | 4 +- .../checkdigit/CUSIPValidatorTest.java | 2 +- .../checkdigit/EAN13CheckDigitTest.java | 2 +- .../checkdigit/IBANCheckDigitTest.java | 2 +- .../checkdigit/ISBN10CheckDigitTest.java | 2 +- .../checkdigit/LuhnCheckDigitTest.java | 2 +- .../checkdigit/SedolCheckDigitTest.java | 2 +- .../checkdigit/VerhoeffCheckDigitTest.java | 2 +- .../net/InetAddressValidatorTest.java | 2 +- .../bval/constraints/AssertFalseValidator.java | 6 +- .../bval/constraints/AssertTrueValidator.java | 6 +- .../DecimalMaxValidatorForNumber.java | 12 +- .../DecimalMaxValidatorForString.java | 2 +- .../DecimalMinValidatorForNumber.java | 12 +- .../DecimalMinValidatorForString.java | 2 +- .../java/org/apache/bval/constraints/Email.java | 15 +- .../apache/bval/constraints/EmailValidator.java | 7 +- .../constraints/FutureOrPresentValidator.java | 138 +++++++++++++++++++ .../bval/constraints/FutureValidator.java | 138 +++++++++++++++++++ .../bval/constraints/MaxValidatorForNumber.java | 4 +- .../bval/constraints/MaxValidatorForString.java | 2 +- .../bval/constraints/MinValidatorForNumber.java | 4 +- .../bval/constraints/MinValidatorForString.java | 2 +- .../bval/constraints/NotBlankValidator.java | 34 +++++ .../org/apache/bval/constraints/NotEmpty.java | 28 ++-- .../bval/constraints/NotEmptyValidator.java | 19 +-- .../NotEmptyValidatorForCharSequence.java | 34 +++++ .../NotEmptyValidatorForCollection.java | 7 +- .../constraints/NotEmptyValidatorForMap.java | 6 +- .../constraints/NotEmptyValidatorForString.java | 37 ----- .../bval/constraints/NotNullValidator.java | 4 - .../apache/bval/constraints/NullValidator.java | 5 - .../bval/constraints/NumberSignValidator.java | 68 +++++++++ .../constraints/PastOrPresentValidator.java | 138 +++++++++++++++++++ .../apache/bval/constraints/PastValidator.java | 138 +++++++++++++++++++ .../bval/constraints/PatternValidator.java | 4 +- .../apache/bval/constraints/TimeValidator.java | 44 ++++++ .../bval/jsr/DefaultConstraints.properties | 81 ++++++++++- 58 files changed, 950 insertions(+), 174 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java index 921ffbc..821b6aa 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = ABANumberValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface ABANumber { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java index 85e84fd..139ab50 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = CUSIPValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface CUSIP { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java index 4f835f6..667c786 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = EAN13Validator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface EAN13 { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java index f0685c0..c48173f 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = IBANValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface IBAN { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java index 38eace6..1f392c7 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java @@ -26,7 +26,7 @@ import static java.lang.Character.getNumericValue; /** * <b>IBAN</b> (International Bank Account Number) Check Digit calculation/validation. * <p> - * This rountine is based on the ISO 7064 Mod 97,10 check digit caluclation routine. + * This routine is based on the ISO 7064 Mod 97,10 check digit caluclation routine. * <p> * The two check digit characters in a IBAN number are the third and fourth characters * in the code. For <i>check digit</i> calculation/validation the first four characters are moved @@ -40,7 +40,7 @@ import static java.lang.Character.getNumericValue; * <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number">Wikipedia - * IBAN number</a>. */ -public final class IBANValidator implements ConstraintValidator<IBAN, String> { +public final class IBANValidator implements ConstraintValidator<IBAN, CharSequence> { private static final long MAX = 999999999; @@ -50,12 +50,12 @@ public final class IBANValidator implements ConstraintValidator<IBAN, String> { * {@inheritDoc} */ @Override - public boolean isValid(String code, ConstraintValidatorContext context) { + public boolean isValid(CharSequence code, ConstraintValidatorContext context) { if (code.length() < 5) { return false; } - String reformattedCode = code.substring(4) + code.substring(0, 4); + String reformattedCode = code.subSequence(4, code.length()).toString() + code.subSequence(0, 4).toString(); long total = 0; for (int i = 0; i < reformattedCode.length(); i++) { int charValue = getNumericValue(reformattedCode.charAt(i)); http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java index a3a1bc3..9ce9b19 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = ISBN10Validator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface ISBN10 { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java index 3bc186e..4e7ede5 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = LuhnValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Luhn { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java index f25bea4..57d463d 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java @@ -38,7 +38,7 @@ import static java.lang.Character.isDigit; * * @param <A> */ -abstract class ModulusValidator<A extends Annotation> implements ConstraintValidator<A, String> { +abstract class ModulusValidator<A extends Annotation> implements ConstraintValidator<A, CharSequence> { private final int modulus; @@ -58,7 +58,7 @@ abstract class ModulusValidator<A extends Annotation> implements ConstraintValid * {@inheritDoc} */ @Override - public boolean isValid(String code, ConstraintValidatorContext context) { + public boolean isValid(CharSequence code, ConstraintValidatorContext context) { if (code.length() == 0) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java index e69947c..67a2c01 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = SedolValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Sedol { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java index e051a39..d3afc67 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java @@ -25,7 +25,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -40,7 +42,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; */ @Documented @Constraint(validatedBy = VerhoeffValidator.class) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Verhoeff { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java index 5a7d76b..b6c6249 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java @@ -33,7 +33,7 @@ import static java.lang.Character.getNumericValue; * See <a href="http://en.wikipedia.org/wiki/Verhoeff_algorithm">Wikipedia * - Verhoeff algorithm</a> for more details. */ -public final class VerhoeffValidator implements ConstraintValidator<Verhoeff, String> { +public final class VerhoeffValidator implements ConstraintValidator<Verhoeff, CharSequence> { //@formatter:off /** D - multiplication table */ @@ -65,7 +65,7 @@ public final class VerhoeffValidator implements ConstraintValidator<Verhoeff, St * {@inheritDoc} */ @Override - public boolean isValid(String code, ConstraintValidatorContext context) { + public boolean isValid(CharSequence code, ConstraintValidatorContext context) { if (code.length() == 0) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java index 3d08d19..051d210 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java @@ -28,7 +28,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -45,7 +47,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Luhn @Pattern(regexp = "^(3[47]\\d{13})$") @Constraint(validatedBy = {}) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface AmericanExpress { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java index de6fd35..efb0772 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java @@ -28,7 +28,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -45,7 +47,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Luhn @Pattern(regexp = "^(30[0-5]\\d{11}|3095\\d{10}|36\\d{12}|3[8-9]\\d{12})$") @Constraint(validatedBy = {}) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Diners { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java index c445837..4e5ddd5 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java @@ -28,7 +28,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -45,7 +47,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Luhn @Pattern(regexp = "^((6011\\d{12})|(64[4-9]\\d{13})|(65\\d{14}))$") @Constraint(validatedBy = {}) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Discover { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java index f30482e..1a9b6a5 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java @@ -28,7 +28,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; @@ -45,7 +47,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Luhn @Pattern(regexp = "^(5[1-5]\\d{14})$") @Constraint(validatedBy = {}) -@Target({ FIELD, ANNOTATION_TYPE, PARAMETER }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) public @interface Mastercard { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java index a95ebde..6bca3b7 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java @@ -32,7 +32,7 @@ public class DirectoryValidator implements ConstraintValidator<Directory, File> */ @Override public boolean isValid(File value, ConstraintValidatorContext context) { - return value.exists() && value.isDirectory(); + return value.isDirectory(); } /** http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java index 6ed85fd..ef85896 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java @@ -49,7 +49,7 @@ public class SymlinkValidator implements ConstraintValidator<Symlink, File> { } try { - File fileInCanonicalDir = null; + File fileInCanonicalDir; if (value.getParent() == null) { fileInCanonicalDir = value; } else { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java index b989531..c7668d5 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java @@ -20,11 +20,12 @@ package org.apache.bval.extras.constraints.net; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; -import java.util.List; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static java.util.Arrays.asList; +import java.util.Arrays; +import java.util.HashSet; /** * <p><b>Domain name</b> validation routines.</p> @@ -63,7 +64,7 @@ import static java.util.Arrays.asList; * {@link java.net.InetAddress} for that functionality.) * </p> */ -public class DomainValidator implements ConstraintValidator<Domain, String> { +public class DomainValidator implements ConstraintValidator<Domain, CharSequence> { private boolean allowLocal; @@ -77,15 +78,13 @@ public class DomainValidator implements ConstraintValidator<Domain, String> { * {@inheritDoc} */ @Override - public boolean isValid(String domain, ConstraintValidatorContext context) { + public boolean isValid(CharSequence domain, ConstraintValidatorContext context) { Matcher matcher = DOMAIN_NAME_REGEX.matcher(domain); if (matcher.matches()) { domain = matcher.group(1); - return isValidTld(domain); - } else if (allowLocal && DOMAIN_LABEL.matcher(domain).matches()) { - return true; + return isValidTld(domain.toString()); } - return false; + return allowLocal && DOMAIN_LABEL.matcher(domain).matches(); } /** @@ -154,7 +153,7 @@ public class DomainValidator implements ConstraintValidator<Domain, String> { } private static String chompLeadingDot(String str) { - if (str.startsWith(".")) { + if (str.charAt(0) == '.') { return str.substring(1); } return str; @@ -165,11 +164,11 @@ public class DomainValidator implements ConstraintValidator<Domain, String> { // ----- Authoritative and comprehensive list at: // ----- http://data.iana.org/TLD/tlds-alpha-by-domain.txt - private static final List<String> INFRASTRUCTURE_TLDS = asList("arpa", // internet infrastructure + private static final Set<String> INFRASTRUCTURE_TLDS = new HashSet<>(Arrays.asList("arpa", // internet infrastructure "root" // diagnostic marker for non-truncated root zone - ); + )); - private static final List<String> GENERIC_TLDS = asList("aero", // air transport industry + private static final Set<String> GENERIC_TLDS = new HashSet<>(Arrays.asList("aero", // air transport industry "asia", // Pan-Asia/Asia Pacific "biz", // businesses "cat", // Catalan linguistic/cultural community @@ -189,9 +188,9 @@ public class DomainValidator implements ConstraintValidator<Domain, String> { "edu", // accredited postsecondary US education entities "mil", // United States Military "int" // organizations established by international treaty - ); + )); - private static final List<String> COUNTRY_CODE_TLDS = asList("ac", // Ascension Island + private static final Set<String> COUNTRY_CODE_TLDS = new HashSet<>(Arrays.asList("ac", // Ascension Island "ad", // Andorra "ae", // United Arab Emirates "af", // Afghanistan @@ -440,11 +439,11 @@ public class DomainValidator implements ConstraintValidator<Domain, String> { "za", // South Africa "zm", // Zambia "zw" // Zimbabwe - ); + )); - private static final List<String> LOCAL_TLDS = asList("localhost", // RFC2606 defined + private static final Set<String> LOCAL_TLDS = new HashSet<>(Arrays.asList("localhost", // RFC2606 defined "localdomain" // Also widely used as localhost.localdomain - ); + )); /** * {@inheritDoc} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java b/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java index 461562c..d482e01 100644 --- a/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java +++ b/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java @@ -27,7 +27,7 @@ import java.util.regex.Pattern; * * <p>This class provides methods to validate a candidate IP address. */ -public class InetAddressValidator implements ConstraintValidator<InetAddress, String> { +public class InetAddressValidator implements ConstraintValidator<InetAddress, CharSequence> { private static final Pattern IPV4_PATTERN = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." @@ -37,7 +37,7 @@ public class InetAddressValidator implements ConstraintValidator<InetAddress, St * {@inheritDoc} */ @Override - public boolean isValid(String value, ConstraintValidatorContext context) { + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { if (!IPV4_PATTERN.matcher(value).matches()) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java index d186dcb..8cd2399 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java @@ -25,7 +25,7 @@ import java.lang.annotation.Annotation; public class ABANumberValidatorTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new ABANumberValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java index c25278f..190bd5b 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java @@ -37,7 +37,7 @@ public abstract class AbstractCheckDigitTest { private int checkDigitLth; /** Check digit routine being tested */ - private ConstraintValidator<? extends Annotation, String> routine; + private ConstraintValidator<? extends Annotation, ? super String> routine; /** Array of valid code values */ private String[] valid; @@ -55,7 +55,7 @@ public abstract class AbstractCheckDigitTest { return 1; } - protected abstract ConstraintValidator<? extends Annotation, String> getConstraint(); + protected abstract ConstraintValidator<? extends Annotation, ? super String> getConstraint(); protected abstract String[] getValid(); http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java index 5bc57c3..fe13c4b 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java @@ -25,7 +25,7 @@ import java.lang.annotation.Annotation; public class CUSIPValidatorTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new CUSIPValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java index 83cbf63..052a1c9 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java @@ -25,7 +25,7 @@ import java.lang.annotation.Annotation; public class EAN13CheckDigitTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new EAN13Validator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java index c0ea8e6..04cfd73 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java @@ -35,7 +35,7 @@ public class IBANCheckDigitTest extends AbstractCheckDigitTest { } @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new IBANValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java index f03e7a1..4940c8b 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java @@ -25,7 +25,7 @@ import java.lang.annotation.Annotation; public class ISBN10CheckDigitTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new ISBN10Validator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java index 06263e7..2b09d50 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java @@ -37,7 +37,7 @@ public class LuhnCheckDigitTest extends AbstractCheckDigitTest { private static final String VALID_DINERS = "30569309025904"; @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new LuhnValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java index 73ea523..55d1f51 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java @@ -25,7 +25,7 @@ import java.lang.annotation.Annotation; public class SedolCheckDigitTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new SedolValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java index 2c6e982..fbd3c7f 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java @@ -28,7 +28,7 @@ import java.lang.annotation.Annotation; public class VerhoeffCheckDigitTest extends AbstractCheckDigitTest { @Override - protected ConstraintValidator<? extends Annotation, String> getConstraint() { + protected ConstraintValidator<? extends Annotation, ? super String> getConstraint() { return new VerhoeffValidator(); } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java ---------------------------------------------------------------------- diff --git a/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java b/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java index 9eba6ec..a79430d 100644 --- a/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java +++ b/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java @@ -27,7 +27,7 @@ import static org.junit.Assert.assertTrue; /** * Test cases for InetAddressValidator. * - * @version $Revision$ + * @version $Revision: 1766546 $ */ public class InetAddressValidatorTest { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java index 9eb4a14..143b76a 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java @@ -28,12 +28,8 @@ import javax.validation.constraints.AssertFalse; public class AssertFalseValidator implements ConstraintValidator<AssertFalse, Boolean> { @Override - public void initialize(AssertFalse annotation) { - } - - @Override public boolean isValid(Boolean value, ConstraintValidatorContext context) { - return value == null || Boolean.FALSE.equals(value); + return !Boolean.TRUE.equals(value); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java index 47ee7f6..93ae933 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java @@ -28,12 +28,8 @@ import javax.validation.constraints.AssertTrue; public class AssertTrueValidator implements ConstraintValidator<AssertTrue, Boolean> { @Override - public void initialize(AssertTrue annotation) { - } - - @Override public boolean isValid(Boolean value, ConstraintValidatorContext context) { - return value == null || Boolean.TRUE.equals(value); + return !Boolean.FALSE.equals(value); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java index dd0c210..725613c 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java @@ -43,12 +43,14 @@ public class DecimalMaxValidatorForNumber implements ConstraintValidator<Decimal if (value == null) { return true; } + BigDecimal bigValue; if (value instanceof BigDecimal) { - return ((BigDecimal) value).compareTo(maxValue) != 1; + bigValue = (BigDecimal) value; + } else if (value instanceof BigInteger) { + bigValue = new BigDecimal((BigInteger) value); + } else { + bigValue = new BigDecimal(value.doubleValue()); } - if (value instanceof BigInteger) { - return (new BigDecimal((BigInteger) value)).compareTo(maxValue) != 1; - } - return (new BigDecimal(value.doubleValue()).compareTo(maxValue)) != 1; + return bigValue.compareTo(maxValue) < 1; } } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java index a247297..cb0e232 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java @@ -46,7 +46,7 @@ public class DecimalMaxValidatorForString implements ConstraintValidator<Decimal return true; } try { - return new BigDecimal(value).compareTo(maxValue) != 1; + return new BigDecimal(value).compareTo(maxValue) < 1; } catch (NumberFormatException nfe) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java index 74ed17a..17c6c38 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java @@ -43,12 +43,14 @@ public class DecimalMinValidatorForNumber implements ConstraintValidator<Decimal if (value == null) { return true; } + BigDecimal bigValue; if (value instanceof BigDecimal) { - return ((BigDecimal) value).compareTo(minValue) != -1; + bigValue = (BigDecimal) value; + } else if (value instanceof BigInteger) { + bigValue = new BigDecimal((BigInteger) value); + } else { + bigValue = new BigDecimal(value.doubleValue()); } - if (value instanceof BigInteger) { - return (new BigDecimal((BigInteger) value)).compareTo(minValue) != -1; - } - return (new BigDecimal(value.doubleValue()).compareTo(minValue)) != -1; + return bigValue.compareTo(minValue) >= 0; } } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java index 8110f8e..ef62387 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java @@ -48,7 +48,7 @@ public class DecimalMinValidatorForString implements ConstraintValidator<Decimal return true; } try { - return new BigDecimal(value).compareTo(minValue) != -1; + return new BigDecimal(value).compareTo(minValue) >= 0; } catch (NumberFormatException nfe) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/Email.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/Email.java b/bval-jsr/src/main/java/org/apache/bval/constraints/Email.java index 2d66d28..f1f9435 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/Email.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/Email.java @@ -19,34 +19,41 @@ package org.apache.bval.constraints; import javax.validation.Constraint; +import javax.validation.OverridesAttribute; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * <p> * -- - * TODO - This class is NOT part of the bean_validation spec and might disappear - * as soon as a final version of the specification contains a similar functionality. + * NOTE - This constraint predates the equivalent version from the bean_validation spec. * -- * </p> * Description: annotation to validate an email address (by pattern)<br/> */ +@Deprecated @Documented -@Constraint(validatedBy = EmailValidator.class) -@Target({ METHOD, FIELD, ANNOTATION_TYPE, PARAMETER }) +@Constraint(validatedBy = {}) [email protected] +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) public @interface Email { + @OverridesAttribute(constraint = javax.validation.constraints.Email.class, name = "groups") Class<?>[] groups() default {}; + @OverridesAttribute(constraint = javax.validation.constraints.Email.class, name = "message") String message() default "{org.apache.bval.constraints.Email.message}"; + @OverridesAttribute(constraint = javax.validation.constraints.Email.class, name = "payload") Class<? extends Payload>[] payload() default {}; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/EmailValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/EmailValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/EmailValidator.java index bcdf0fe..b20806b 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/EmailValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/EmailValidator.java @@ -26,15 +26,10 @@ import javax.validation.ConstraintValidatorContext; /** * Description: <br/> */ -public class EmailValidator implements ConstraintValidator<Email, CharSequence> { +public class EmailValidator implements ConstraintValidator<javax.validation.constraints.Email, CharSequence> { @Override public boolean isValid(CharSequence value, ConstraintValidatorContext context) { return EMailValidationUtils.isValid(value); } - - @Override - public void initialize(Email parameters) { - // do nothing (as long as Email has no properties) - } } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/FutureOrPresentValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/FutureOrPresentValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/FutureOrPresentValidator.java new file mode 100644 index 0000000..4cc85b1 --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/FutureOrPresentValidator.java @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bval.constraints; + +import java.time.Clock; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.MonthDay; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.Year; +import java.time.YearMonth; +import java.time.ZonedDateTime; +import java.time.chrono.ChronoLocalDate; +import java.time.chrono.ChronoLocalDateTime; +import java.time.chrono.ChronoZonedDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.function.Function; + +import javax.validation.ConstraintValidator; +import javax.validation.constraints.FutureOrPresent; + +/** + * Defines built-in {@link ConstraintValidator} implementations for {@link FutureOrPresent}. + * + * @param <T> + * validated type + */ +public abstract class FutureOrPresentValidator<T extends Comparable<T>> extends TimeValidator<FutureOrPresent, T> { + + public static class ForDate extends FutureOrPresentValidator<Date> { + + public ForDate() { + super(clock -> Date.from(clock.instant())); + } + } + + public static class ForCalendar extends FutureOrPresentValidator<Calendar> { + + public ForCalendar() { + super(clock -> GregorianCalendar.from(clock.instant().atZone(clock.getZone()))); + } + } + + public static class ForInstant extends FutureOrPresentValidator<Instant> { + + public ForInstant() { + super(Instant::now); + } + } + + public static class ForChronoLocalDate extends FutureOrPresentValidator<ChronoLocalDate> { + + public ForChronoLocalDate() { + super(LocalDate::now); + } + } + + public static class ForChronoLocalDateTime extends FutureOrPresentValidator<ChronoLocalDateTime<?>> { + + public ForChronoLocalDateTime() { + super(LocalDateTime::now); + } + } + + public static class ForLocalTime extends FutureOrPresentValidator<LocalTime> { + + public ForLocalTime() { + super(LocalTime::now); + } + } + + public static class ForOffsetDateTime extends FutureOrPresentValidator<OffsetDateTime> { + + public ForOffsetDateTime() { + super(OffsetDateTime::now); + } + } + + public static class ForOffsetTime extends FutureOrPresentValidator<OffsetTime> { + + public ForOffsetTime() { + super(OffsetTime::now); + } + } + + public static class ForChronoZonedDateTime extends FutureOrPresentValidator<ChronoZonedDateTime<?>> { + + public ForChronoZonedDateTime() { + super(ZonedDateTime::now); + } + } + + public static class ForMonthDay extends FutureOrPresentValidator<MonthDay> { + + public ForMonthDay() { + super(MonthDay::now); + } + } + + public static class ForYear extends FutureOrPresentValidator<Year> { + + public ForYear() { + super(Year::now); + } + } + + public static class ForYearMonth extends FutureOrPresentValidator<YearMonth> { + + public ForYearMonth() { + super(YearMonth::now); + } + } + + protected FutureOrPresentValidator(Function<Clock, T> now) { + super(now, n -> n >= 0); + } +} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/FutureValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/FutureValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/FutureValidator.java new file mode 100644 index 0000000..dd6116b --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/FutureValidator.java @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bval.constraints; + +import java.time.Clock; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.MonthDay; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.Year; +import java.time.YearMonth; +import java.time.ZonedDateTime; +import java.time.chrono.ChronoLocalDate; +import java.time.chrono.ChronoLocalDateTime; +import java.time.chrono.ChronoZonedDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.function.Function; + +import javax.validation.ConstraintValidator; +import javax.validation.constraints.Future; + +/** + * Defines built-in {@link ConstraintValidator} implementations for {@link Future}. + * + * @param <T> + * validated type + */ +public abstract class FutureValidator<T extends Comparable<T>> extends TimeValidator<Future, T> { + + public static class ForDate extends FutureValidator<Date> { + + public ForDate() { + super(clock -> Date.from(clock.instant())); + } + } + + public static class ForCalendar extends FutureValidator<Calendar> { + + public ForCalendar() { + super(clock -> GregorianCalendar.from(clock.instant().atZone(clock.getZone()))); + } + } + + public static class ForInstant extends FutureValidator<Instant> { + + public ForInstant() { + super(Instant::now); + } + } + + public static class ForChronoLocalDate extends FutureValidator<ChronoLocalDate> { + + public ForChronoLocalDate() { + super(LocalDate::now); + } + } + + public static class ForChronoLocalDateTime extends FutureValidator<ChronoLocalDateTime<?>> { + + public ForChronoLocalDateTime() { + super(LocalDateTime::now); + } + } + + public static class ForLocalTime extends FutureValidator<LocalTime> { + + public ForLocalTime() { + super(LocalTime::now); + } + } + + public static class ForOffsetDateTime extends FutureValidator<OffsetDateTime> { + + public ForOffsetDateTime() { + super(OffsetDateTime::now); + } + } + + public static class ForOffsetTime extends FutureValidator<OffsetTime> { + + public ForOffsetTime() { + super(OffsetTime::now); + } + } + + public static class ForChronoZonedDateTime extends FutureValidator<ChronoZonedDateTime<?>> { + + public ForChronoZonedDateTime() { + super(ZonedDateTime::now); + } + } + + public static class ForMonthDay extends FutureValidator<MonthDay> { + + public ForMonthDay() { + super(MonthDay::now); + } + } + + public static class ForYear extends FutureValidator<Year> { + + public ForYear() { + super(Year::now); + } + } + + public static class ForYearMonth extends FutureValidator<YearMonth> { + + public ForYearMonth() { + super(YearMonth::now); + } + } + + protected FutureValidator(Function<Clock, T> now) { + super(now, n -> n > 0); + } +} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java b/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java index 78524f9..0ad81a8 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java @@ -43,10 +43,10 @@ public class MaxValidatorForNumber implements ConstraintValidator<Max, Number> { return true; } if (value instanceof BigDecimal) { - return ((BigDecimal) value).compareTo(BigDecimal.valueOf(max)) != 1; + return ((BigDecimal) value).compareTo(BigDecimal.valueOf(max)) < 1; } if (value instanceof BigInteger) { - return ((BigInteger) value).compareTo(BigInteger.valueOf(max)) != 1; + return ((BigInteger) value).compareTo(BigInteger.valueOf(max)) < 1; } return value.longValue() <= max; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java b/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java index 4170a5c..f14f8e7 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java @@ -42,7 +42,7 @@ public class MaxValidatorForString implements ConstraintValidator<Max, String> { return true; } try { - return new BigDecimal(value).compareTo(BigDecimal.valueOf(max)) != 1; + return new BigDecimal(value).compareTo(BigDecimal.valueOf(max)) < 1; } catch (NumberFormatException nfe) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java b/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java index b5aeaad..c467de2 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java @@ -42,10 +42,10 @@ public class MinValidatorForNumber implements ConstraintValidator<Min, Number> { return true; } if (value instanceof BigDecimal) { - return ((BigDecimal) value).compareTo(BigDecimal.valueOf(minValue)) != -1; + return ((BigDecimal) value).compareTo(BigDecimal.valueOf(minValue)) >= 0; } if (value instanceof BigInteger) { - return ((BigInteger) value).compareTo(BigInteger.valueOf(minValue)) != -1; + return ((BigInteger) value).compareTo(BigInteger.valueOf(minValue)) >= 0; } return value.longValue() >= minValue; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForString.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForString.java b/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForString.java index bd3a4dd..5d45fc2 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForString.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/MinValidatorForString.java @@ -42,7 +42,7 @@ public class MinValidatorForString implements ConstraintValidator<Min, String> { return true; } try { - return new BigDecimal(value).compareTo(BigDecimal.valueOf(minValue)) != -1; + return new BigDecimal(value).compareTo(BigDecimal.valueOf(minValue)) >= 0; } catch (NumberFormatException nfe) { return false; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotBlankValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotBlankValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotBlankValidator.java new file mode 100644 index 0000000..e201c0d --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotBlankValidator.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bval.constraints; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import javax.validation.constraints.NotBlank; + +/** + * Validate {@link NotBlank} for {@link CharSequence}. + */ +public class NotBlankValidator implements ConstraintValidator<NotBlank, CharSequence> { + + @Override + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { + return value == null || value.length() > 0 && !value.chars().allMatch(Character::isWhitespace); + } +} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmpty.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmpty.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmpty.java index ffa8cf8..00497ea 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmpty.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmpty.java @@ -18,18 +18,22 @@ */ package org.apache.bval.constraints; -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.OverridesAttribute; +import javax.validation.Payload; + /** * <pre> * This class is NOT part of the bean_validation spec and might disappear @@ -37,14 +41,20 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; * </pre> */ @Documented -@Constraint(validatedBy = { NotEmptyValidatorForCollection.class, NotEmptyValidatorForMap.class, - NotEmptyValidatorForString.class, NotEmptyValidator.class }) -@Target({ METHOD, FIELD, ANNOTATION_TYPE, PARAMETER }) +@Constraint(validatedBy = {}) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) [email protected] +@Deprecated public @interface NotEmpty { Class<?>[] groups() default {}; + @OverridesAttribute(constraint = javax.validation.constraints.NotEmpty.class, name = "message") String message() default "{org.apache.bval.constraints.NotEmpty.message}"; Class<? extends Payload>[] payload() default {}; + + public @interface List { + NotEmpty[] value(); + } } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java index 4316b39..92c8739 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java @@ -25,14 +25,10 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** - * Description: Check the non emptyness of an + * Description: Check the non emptiness of an * any object that has a public isEmpty():boolean or a valid toString() method */ -public class NotEmptyValidator implements ConstraintValidator<NotEmpty, Object> { - @Override - public void initialize(NotEmpty constraintAnnotation) { - // do nothing - } +public class NotEmptyValidator implements ConstraintValidator<javax.validation.constraints.NotEmpty, Object> { @Override public boolean isValid(Object value, ConstraintValidatorContext context) { @@ -45,15 +41,12 @@ public class NotEmptyValidator implements ConstraintValidator<NotEmpty, Object> try { final Method isEmptyMethod = value.getClass().getMethod("isEmpty"); if (isEmptyMethod != null) { - return !((Boolean) isEmptyMethod.invoke(value)).booleanValue(); + return !Boolean.TRUE.equals(isEmptyMethod.invoke(value)); } - } catch (IllegalAccessException iae) { - // do nothing - } catch (NoSuchMethodException nsme) { - // do nothing - } catch (InvocationTargetException ite) { + } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException iae) { // do nothing } - return !value.toString().isEmpty(); + final String s = value.toString(); + return s != null && !s.isEmpty(); } } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCharSequence.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCharSequence.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCharSequence.java new file mode 100644 index 0000000..320c105 --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCharSequence.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bval.constraints; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * Description: <br/> + */ +public class NotEmptyValidatorForCharSequence + implements ConstraintValidator<javax.validation.constraints.NotEmpty, CharSequence> { + + @Override + public boolean isValid(CharSequence value, ConstraintValidatorContext context) { + return value == null || value.length() > 0; + } +} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java index 5faab13..da0c438 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java @@ -25,11 +25,8 @@ import java.util.Collection; /** * Description: <br/> */ -public class NotEmptyValidatorForCollection implements ConstraintValidator<NotEmpty, Collection<?>> { - @Override - public void initialize(NotEmpty constraintAnnotation) { - // do nothing - } +public class NotEmptyValidatorForCollection + implements ConstraintValidator<javax.validation.constraints.NotEmpty, Collection<?>> { @Override public boolean isValid(Collection<?> value, ConstraintValidatorContext context) { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java index b5a4f49..6a5221e 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java @@ -25,11 +25,7 @@ import java.util.Map; /** * Description: <br/> */ -public class NotEmptyValidatorForMap implements ConstraintValidator<NotEmpty, Map<?, ?>> { - @Override - public void initialize(NotEmpty constraintAnnotation) { - // do nothing - } +public class NotEmptyValidatorForMap implements ConstraintValidator<javax.validation.constraints.NotEmpty, Map<?, ?>> { @Override public boolean isValid(Map<?, ?> value, ConstraintValidatorContext context) { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java deleted file mode 100644 index 9fc3023..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.bval.constraints; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; - -/** - * Description: <br/> - */ -public class NotEmptyValidatorForString implements ConstraintValidator<NotEmpty, String> { - @Override - public void initialize(NotEmpty constraintAnnotation) { - // do nothing - } - - @Override - public boolean isValid(String value, ConstraintValidatorContext context) { - return value == null || !value.isEmpty(); - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NotNullValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NotNullValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NotNullValidator.java index b39d493..c14cff2 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NotNullValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NotNullValidator.java @@ -24,10 +24,6 @@ import javax.validation.constraints.NotNull; /** valid when object is NOT null */ public class NotNullValidator implements ConstraintValidator<NotNull, Object> { - @Override - public void initialize(NotNull constraintAnnotation) { - // do nothing - } @Override public boolean isValid(Object value, ConstraintValidatorContext context) { http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NullValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NullValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NullValidator.java index 7c16296..523ef75 100644 --- a/bval-jsr/src/main/java/org/apache/bval/constraints/NullValidator.java +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NullValidator.java @@ -28,11 +28,6 @@ import javax.validation.constraints.Null; public class NullValidator implements ConstraintValidator<Null, Object> { @Override - public void initialize(Null annotation) { - // do nothing - } - - @Override public boolean isValid(Object object, ConstraintValidatorContext context) { return object == null; } http://git-wip-us.apache.org/repos/asf/bval/blob/40fc20f6/bval-jsr/src/main/java/org/apache/bval/constraints/NumberSignValidator.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/constraints/NumberSignValidator.java b/bval-jsr/src/main/java/org/apache/bval/constraints/NumberSignValidator.java new file mode 100644 index 0000000..fe8f59c --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/constraints/NumberSignValidator.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bval.constraints; + +import java.util.function.IntPredicate; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import javax.validation.constraints.Negative; + +import org.apache.bval.util.Validate; + +/** + * Description: validate positive/negative number values. + */ +public abstract class NumberSignValidator implements ConstraintValidator<Negative, Number> { + public static class ForPositive extends NumberSignValidator { + public static class OrZero extends NumberSignValidator { + public OrZero() { + super(n -> n >= 0); + } + } + + public ForPositive() { + super(n -> n > 0); + } + } + + public static class ForNegative extends NumberSignValidator { + public static class OrZero extends NumberSignValidator { + public OrZero() { + super(n -> n <= 0); + } + } + + public ForNegative() { + super(n -> n < 0); + } + } + + private final IntPredicate comparisonTest; + + protected NumberSignValidator(IntPredicate comparisonTest) { + super(); + this.comparisonTest = Validate.notNull(comparisonTest); + } + + @Override + public boolean isValid(Number value, ConstraintValidatorContext context) { + return value == null || comparisonTest.test(Double.compare(value.doubleValue(), 0.0)); + } +}
