Search in sources :

Example 6 with Max

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

the class ResourceBundleMessageInterpolatorTest method testRecursiveMessageInterpolation.

@Test
@TestForIssue(jiraKey = "HV-102")
public void testRecursiveMessageInterpolation() {
    ConstraintAnnotationDescriptor.Builder<Max> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(Max.class);
    descriptorBuilder.setMessage("{replace.in.user.bundle1}");
    descriptorBuilder.setAttribute("value", 10L);
    ConstraintAnnotationDescriptor<Max> descriptor = descriptorBuilder.build();
    ConstraintDescriptorImpl<Max> constraintDescriptor = new ConstraintDescriptorImpl<Max>(ConstraintHelper.forAllBuiltinConstraints(), null, descriptorBuilder.build(), ConstraintLocationKind.FIELD);
    interpolator = new ResourceBundleMessageInterpolator(new TestResourceBundleLocator());
    MessageInterpolator.Context messageInterpolatorContext = createMessageInterpolatorContext(constraintDescriptor);
    String expected = "{replace.in.default.bundle2}";
    String actual = interpolator.interpolate(descriptor.getAnnotation().message(), messageInterpolatorContext);
    assertEquals(actual, expected, "Within default bundle replacement parameter evaluation should not be recursive!");
}
Also used : ResourceBundleMessageInterpolator(org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator) ConstraintAnnotationDescriptor(org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor) Max(jakarta.validation.constraints.Max) ConstraintDescriptorImpl(org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl) ResourceBundleMessageInterpolator(org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator) MessageInterpolator(jakarta.validation.MessageInterpolator) Test(org.testng.annotations.Test) BeforeTest(org.testng.annotations.BeforeTest) TestForIssue(org.hibernate.validator.testutil.TestForIssue)

Example 7 with Max

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

the class MaxValidatorForNumberTest method testIsValidNumberForFloatingPointOrBigNumbersStoredAsNumber.

@Test
@TestForIssue(jiraKey = "HV-1699")
public void testIsValidNumberForFloatingPointOrBigNumbersStoredAsNumber() {
    ConstraintAnnotationDescriptor.Builder<Max> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(Max.class);
    descriptorBuilder.setAttribute("value", 1L);
    Max m = descriptorBuilder.build().getAnnotation();
    MaxValidatorForNumber validator = new MaxValidatorForNumber();
    validator.initialize(m);
    assertFalse(validator.isValid(1.01, null));
    assertFalse(validator.isValid(1.01F, null));
    assertFalse(validator.isValid(new BigDecimal("1.01"), null));
    assertFalse(validator.isValid(new BigInteger("2"), null));
    assertFalse(validator.isValid(Double.POSITIVE_INFINITY, null));
    assertFalse(validator.isValid(Float.POSITIVE_INFINITY, null));
}
Also used : ConstraintAnnotationDescriptor(org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor) DecimalMax(jakarta.validation.constraints.DecimalMax) Max(jakarta.validation.constraints.Max) BigInteger(java.math.BigInteger) MaxValidatorForBigInteger(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForBigInteger) DecimalMaxValidatorForBigInteger(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForBigInteger) BigDecimal(java.math.BigDecimal) MaxValidatorForBigDecimal(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForBigDecimal) DecimalMaxValidatorForBigDecimal(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForBigDecimal) DecimalMaxValidatorForNumber(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForNumber) MaxValidatorForNumber(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForNumber) Test(org.testng.annotations.Test) TestForIssue(org.hibernate.validator.testutil.TestForIssue)

Example 8 with Max

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

the class MaxValidatorForStringTest method testIsValidMax.

@Test
public void testIsValidMax() {
    ConstraintAnnotationDescriptor.Builder<Max> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(Max.class);
    descriptorBuilder.setAttribute("value", 15L);
    descriptorBuilder.setMessage("{validator.max}");
    Max m = descriptorBuilder.build().getAnnotation();
    MaxValidatorForCharSequence constraint = new MaxValidatorForCharSequence();
    constraint.initialize(m);
    testMaxValidator(constraint, true);
}
Also used : ConstraintAnnotationDescriptor(org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor) DecimalMax(jakarta.validation.constraints.DecimalMax) Max(jakarta.validation.constraints.Max) MaxValidatorForCharSequence(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForCharSequence) DecimalMaxValidatorForCharSequence(org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForCharSequence) Test(org.testng.annotations.Test)

Example 9 with Max

use of jakarta.validation.constraints.Max in project jsonschema-generator by victools.

the class JakartaValidationModule method resolveNumberInclusiveMaximum.

/**
 * Determine a number type's maximum (inclusive) value.
 *
 * @param member the field or method to check
 * @return specified inclusive maximum value (or null)
 * @see Max
 * @see DecimalMax#inclusive()
 * @see NegativeOrZero
 */
protected BigDecimal resolveNumberInclusiveMaximum(MemberScope<?, ?> member) {
    Max maxAnnotation = this.getAnnotationFromFieldOrGetter(member, Max.class, Max::groups);
    if (maxAnnotation != null) {
        return new BigDecimal(maxAnnotation.value());
    }
    DecimalMax decimalMaxAnnotation = this.getAnnotationFromFieldOrGetter(member, DecimalMax.class, DecimalMax::groups);
    if (decimalMaxAnnotation != null && decimalMaxAnnotation.inclusive()) {
        return new BigDecimal(decimalMaxAnnotation.value());
    }
    NegativeOrZero negativeAnnotation = this.getAnnotationFromFieldOrGetter(member, NegativeOrZero.class, NegativeOrZero::groups);
    if (negativeAnnotation != null) {
        return BigDecimal.ZERO;
    }
    return null;
}
Also used : DecimalMax(jakarta.validation.constraints.DecimalMax) Max(jakarta.validation.constraints.Max) BigDecimal(java.math.BigDecimal) DecimalMax(jakarta.validation.constraints.DecimalMax) NegativeOrZero(jakarta.validation.constraints.NegativeOrZero)

Example 10 with Max

use of jakarta.validation.constraints.Max 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

Max (jakarta.validation.constraints.Max)10 Test (org.testng.annotations.Test)6 DecimalMax (jakarta.validation.constraints.DecimalMax)5 ConstraintAnnotationDescriptor (org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor)5 TestForIssue (org.hibernate.validator.testutil.TestForIssue)3 MessageInterpolator (jakarta.validation.MessageInterpolator)2 Min (jakarta.validation.constraints.Min)2 Pattern (jakarta.validation.constraints.Pattern)2 Size (jakarta.validation.constraints.Size)2 BigDecimal (java.math.BigDecimal)2 ConstraintDescriptorImpl (org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl)2 ResourceBundleMessageInterpolator (org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator)2 BeforeTest (org.testng.annotations.BeforeTest)2 Constraint (jakarta.validation.Constraint)1 ConstraintViolation (jakarta.validation.ConstraintViolation)1 ValidationException (jakarta.validation.ValidationException)1 Validator (jakarta.validation.Validator)1 AssertFalse (jakarta.validation.constraints.AssertFalse)1 AssertTrue (jakarta.validation.constraints.AssertTrue)1 DecimalMin (jakarta.validation.constraints.DecimalMin)1