Search in sources :

Example 11 with Digits

use of jakarta.validation.constraints.Digits in project hibernate-validator by hibernate.

the class DigitsValidatorForCharSequenceTest method testNegativeIntegerLength.

@Test(expectedExceptions = IllegalArgumentException.class)
public void testNegativeIntegerLength() {
    descriptorBuilder.setAttribute("integer", -1);
    descriptorBuilder.setAttribute("fraction", 1);
    Digits p = descriptorBuilder.build().getAnnotation();
    DigitsValidatorForCharSequence constraint = new DigitsValidatorForCharSequence();
    constraint.initialize(p);
}
Also used : Digits(jakarta.validation.constraints.Digits) DigitsValidatorForCharSequence(org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForCharSequence) Test(org.testng.annotations.Test)

Example 12 with Digits

use of jakarta.validation.constraints.Digits in project hibernate-validator by hibernate.

the class DigitsValidatorForCharSequenceTest method init.

@BeforeClass
public static void init() {
    ConstraintAnnotationDescriptor.Builder<Digits> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(Digits.class);
    descriptorBuilder.setAttribute("integer", 5);
    descriptorBuilder.setAttribute("fraction", 2);
    descriptorBuilder.setMessage("{validator.digits}");
    Digits p = descriptorBuilder.build().getAnnotation();
    constraint = new DigitsValidatorForCharSequence();
    constraint.initialize(p);
}
Also used : ConstraintAnnotationDescriptor(org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor) Digits(jakarta.validation.constraints.Digits) DigitsValidatorForCharSequence(org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForCharSequence) BeforeClass(org.testng.annotations.BeforeClass)

Example 13 with Digits

use of jakarta.validation.constraints.Digits in project hibernate-validator by hibernate.

the class DigitsValidatorForNumberTest method testTrailingZerosAreTrimmed.

@Test
public void testTrailingZerosAreTrimmed() {
    descriptorBuilder.setAttribute("integer", 12);
    descriptorBuilder.setAttribute("fraction", 3);
    Digits p = descriptorBuilder.build().getAnnotation();
    DigitsValidatorForNumber constraint = new DigitsValidatorForNumber();
    constraint.initialize(p);
    assertTrue(constraint.isValid(0.001d, null));
    assertTrue(constraint.isValid(0.00100d, null));
    assertFalse(constraint.isValid(0.0001d, null));
}
Also used : DigitsValidatorForNumber(org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForNumber) Digits(jakarta.validation.constraints.Digits) Test(org.testng.annotations.Test)

Example 14 with Digits

use of jakarta.validation.constraints.Digits in project hibernate-validator by hibernate.

the class DigitsValidatorForNumberTest method testIsValidZeroLength.

@Test
public void testIsValidZeroLength() {
    descriptorBuilder.setAttribute("integer", 0);
    descriptorBuilder.setAttribute("fraction", 0);
    Digits p = descriptorBuilder.build().getAnnotation();
    DigitsValidatorForNumber constraint = new DigitsValidatorForNumber();
    constraint.initialize(p);
    assertTrue(constraint.isValid(null, null));
    assertFalse(constraint.isValid(Byte.valueOf("0"), null));
    assertFalse(constraint.isValid(Double.valueOf("500.2"), null));
}
Also used : DigitsValidatorForNumber(org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForNumber) Digits(jakarta.validation.constraints.Digits) Test(org.testng.annotations.Test)

Example 15 with Digits

use of jakarta.validation.constraints.Digits in project eclipselink by eclipse-ee4j.

the class AnnotationsProcessor method addFacets.

/**
 * @since 2.6
 * @author Marcel Valovy
 * @param property property for which facets will be generated
 */
private void addFacets(Property property) {
    final JavaHasAnnotations element = property.getElement();
    if (helper.isAnnotationPresent(element, DecimalMin.class)) {
        DecimalMin a = (DecimalMin) helper.getAnnotation(element, DecimalMin.class);
        DecimalMinFacet facet = new DecimalMinFacet(a.value(), a.inclusive());
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, DecimalMax.class)) {
        DecimalMax a = (DecimalMax) helper.getAnnotation(element, DecimalMax.class);
        DecimalMaxFacet facet = new DecimalMaxFacet(a.value(), a.inclusive());
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, Digits.class)) {
        Digits a = (Digits) helper.getAnnotation(element, Digits.class);
        DigitsFacet facet = new DigitsFacet(a.integer(), a.fraction());
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, Max.class)) {
        Max a = (Max) helper.getAnnotation(element, Max.class);
        MaxFacet facet = new MaxFacet(a.value());
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, Min.class)) {
        Min a = (Min) helper.getAnnotation(element, Min.class);
        MinFacet facet = new MinFacet(a.value());
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, NotNull.class)) {
        property.setNotNullAnnotated(true);
    }
    if (helper.isAnnotationPresent(element, Pattern.class)) {
        Pattern a = (Pattern) helper.getAnnotation(element, Pattern.class);
        PatternFacet facet = new PatternFacet(a.regexp(), a.flags());
        property.addFacet(facet);
    }
    /* Example:
            @Pattern.List({
                @Pattern(regexp = "first_expression", message = "first.Pattern.message"),
                @Pattern(regexp = "second_expression", message = "second.Pattern.message"),
                @Pattern(regexp = "third_expression", message = "third.Pattern.message")
        }) */
    if (helper.isAnnotationPresent(element, Pattern.List.class)) {
        Pattern.List a = (Pattern.List) helper.getAnnotation(element, Pattern.List.class);
        PatternListFacet facet = new PatternListFacet(new ArrayList<>());
        for (Pattern pat : a.value()) {
            PatternFacet pf = new PatternFacet(pat.regexp(), pat.flags());
            facet.addPattern(pf);
        }
        property.addFacet(facet);
    }
    if (helper.isAnnotationPresent(element, Size.class)) {
        Size a = (Size) helper.getAnnotation(element, Size.class);
        final int min = a.min();
        final int max = a.max();
        if (min != 0 || max != Integer.MAX_VALUE) {
            // Fixes generation of an empty facet.
            if ("java.lang.String".equals(property.getType().getName())) {
                // @Size serves for both length facet and occurs restriction.
                // For minLength, maxLength.
                SizeFacet facet = new SizeFacet(min, max);
                property.addFacet(facet);
            } else {
                // 0 is default minBoundary.
                if (min > 0)
                    property.setMinOccurs(min);
                // 2^31 is default maxBoundary.
                if (max < Integer.MAX_VALUE)
                    property.setMaxOccurs(max);
            }
        }
    }
}
Also used : MinFacet(org.eclipse.persistence.jaxb.compiler.facets.MinFacet) DecimalMinFacet(org.eclipse.persistence.jaxb.compiler.facets.DecimalMinFacet) Pattern(jakarta.validation.constraints.Pattern) Max(jakarta.validation.constraints.Max) DecimalMax(jakarta.validation.constraints.DecimalMax) Size(jakarta.validation.constraints.Size) Digits(jakarta.validation.constraints.Digits) PatternFacet(org.eclipse.persistence.jaxb.compiler.facets.PatternFacet) DigitsFacet(org.eclipse.persistence.jaxb.compiler.facets.DigitsFacet) DecimalMin(jakarta.validation.constraints.DecimalMin) DecimalMaxFacet(org.eclipse.persistence.jaxb.compiler.facets.DecimalMaxFacet) PatternListFacet(org.eclipse.persistence.jaxb.compiler.facets.PatternListFacet) Min(jakarta.validation.constraints.Min) DecimalMin(jakarta.validation.constraints.DecimalMin) SizeFacet(org.eclipse.persistence.jaxb.compiler.facets.SizeFacet) MaxFacet(org.eclipse.persistence.jaxb.compiler.facets.MaxFacet) DecimalMaxFacet(org.eclipse.persistence.jaxb.compiler.facets.DecimalMaxFacet) ArrayList(java.util.ArrayList) XmlList(jakarta.xml.bind.annotation.XmlList) List(java.util.List) JavaHasAnnotations(org.eclipse.persistence.jaxb.javamodel.JavaHasAnnotations) DecimalMax(jakarta.validation.constraints.DecimalMax) DecimalMinFacet(org.eclipse.persistence.jaxb.compiler.facets.DecimalMinFacet)

Aggregations

Digits (jakarta.validation.constraints.Digits)15 Test (org.testng.annotations.Test)12 DigitsValidatorForNumber (org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForNumber)5 DigitsValidatorForMonetaryAmount (org.hibernate.validator.internal.constraintvalidators.bv.money.DigitsValidatorForMonetaryAmount)5 CurrencyUnit (javax.money.CurrencyUnit)3 DigitsValidatorForCharSequence (org.hibernate.validator.internal.constraintvalidators.bv.DigitsValidatorForCharSequence)3 BigDecimal (java.math.BigDecimal)2 DecimalMax (jakarta.validation.constraints.DecimalMax)1 DecimalMin (jakarta.validation.constraints.DecimalMin)1 Max (jakarta.validation.constraints.Max)1 Min (jakarta.validation.constraints.Min)1 Pattern (jakarta.validation.constraints.Pattern)1 Size (jakarta.validation.constraints.Size)1 ConstraintDescriptor (jakarta.validation.metadata.ConstraintDescriptor)1 XmlList (jakarta.xml.bind.annotation.XmlList)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 DecimalMaxFacet (org.eclipse.persistence.jaxb.compiler.facets.DecimalMaxFacet)1 DecimalMinFacet (org.eclipse.persistence.jaxb.compiler.facets.DecimalMinFacet)1 DigitsFacet (org.eclipse.persistence.jaxb.compiler.facets.DigitsFacet)1