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!");
}
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));
}
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);
}
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;
}
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);
}
}
}
}
Aggregations