Search in sources :

Example 1 with Size

use of jakarta.validation.constraints.Size in project minijax by minijax.

the class MinijaxConstraintDescriptor method build.

@SuppressWarnings("unchecked")
public static <T extends Annotation> MinijaxConstraintDescriptor<T> build(final AnnotatedType annotatedType, final T annotation) {
    final Constraint constraint = annotation.annotationType().getAnnotation(Constraint.class);
    if (constraint == null) {
        return null;
    }
    final Class<?> valueClass = ReflectionUtils.getRawType(annotatedType);
    final Class<?> annotationClass = annotation.annotationType();
    if (constraint.validatedBy().length > 0) {
        return buildDeclaredValidator(annotation, constraint.validatedBy()[0]);
    } else if (annotationClass == AssertFalse.class) {
        return (MinijaxConstraintDescriptor<T>) buildAssertFalseValidator((AssertFalse) annotation, valueClass);
    } else if (annotationClass == AssertTrue.class) {
        return (MinijaxConstraintDescriptor<T>) buildAssertTrueValidator((AssertTrue) annotation, valueClass);
    } else if (annotationClass == Max.class) {
        return (MinijaxConstraintDescriptor<T>) buildMaxValidator((Max) annotation, valueClass);
    } else if (annotationClass == Min.class) {
        return (MinijaxConstraintDescriptor<T>) buildMinValidator((Min) annotation, valueClass);
    } else if (annotationClass == NotBlank.class) {
        return (MinijaxConstraintDescriptor<T>) buildNotBlankValidator((NotBlank) annotation, valueClass);
    } else if (annotationClass == NotEmpty.class) {
        return (MinijaxConstraintDescriptor<T>) buildNotEmptyValidator((NotEmpty) annotation, valueClass);
    } else if (annotationClass == NotNull.class) {
        return (MinijaxConstraintDescriptor<T>) buildNotNullValidator((NotNull) annotation);
    } else if (annotationClass == Pattern.class) {
        return (MinijaxConstraintDescriptor<T>) buildPatternValidator((Pattern) annotation, valueClass);
    } else if (annotationClass == Size.class) {
        return (MinijaxConstraintDescriptor<T>) buildSizeValidator((Size) annotation, valueClass);
    } else {
        throw new ValidationException("Unrecognized constraint annotation: " + annotation);
    }
}
Also used : Pattern(jakarta.validation.constraints.Pattern) ValidationException(jakarta.validation.ValidationException) Constraint(jakarta.validation.Constraint) Max(jakarta.validation.constraints.Max) Size(jakarta.validation.constraints.Size) AssertTrue(jakarta.validation.constraints.AssertTrue) NotNull(jakarta.validation.constraints.NotNull) Min(jakarta.validation.constraints.Min) NotBlank(jakarta.validation.constraints.NotBlank) AssertFalse(jakarta.validation.constraints.AssertFalse) NotEmpty(jakarta.validation.constraints.NotEmpty)

Example 2 with Size

use of jakarta.validation.constraints.Size in project hibernate-orm by hibernate.

the class TypeSafeActivator method applySize.

private static void applySize(Property property, ConstraintDescriptor<?> descriptor, PropertyDescriptor propertyDescriptor) {
    if (Size.class.equals(descriptor.getAnnotation().annotationType()) && String.class.equals(propertyDescriptor.getElementClass())) {
        @SuppressWarnings("unchecked") ConstraintDescriptor<Size> sizeConstraint = (ConstraintDescriptor<Size>) descriptor;
        int max = sizeConstraint.getAnnotation().max();
        for (Column col : property.getColumns()) {
            if (max < Integer.MAX_VALUE) {
                col.setLength(max);
            }
        }
    }
}
Also used : Column(org.hibernate.mapping.Column) Size(jakarta.validation.constraints.Size) ConstraintDescriptor(jakarta.validation.metadata.ConstraintDescriptor)

Example 3 with Size

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

the class ProgrammaticContainerElementConstraintsForParameterTest method canDeclareContainerElementConstraintsForParameterProgrammatically.

@Test
@TestForIssue(jiraKey = "HV-1239")
public void canDeclareContainerElementConstraintsForParameterProgrammatically() {
    ConstraintMapping newMapping = config.createConstraintMapping();
    newMapping.type(IFishTank.class).method("test1", Optional.class, Map.class).parameter(0).containerElementType().constraint(new SizeDef().max(5)).parameter(1).containerElementType(0).constraint(new SizeDef().min(3).max(10)).containerElementType(1).constraint(new MinDef().value(1));
    config.addMapping(newMapping);
    Validator validator = config.buildValidatorFactory().getValidator();
    IFishTank fishTank = ValidatorUtil.getValidatingProxy(new FishTank(), validator);
    try {
        HashMap<String, Integer> fishCountByType = new HashMap<>();
        fishCountByType.put("A", -1);
        fishCountByType.put("BB", -2);
        fishTank.test1(Optional.of("Too long"), fishCountByType);
        fail("Expected exception wasn't raised");
    } catch (ConstraintViolationException e) {
        assertThat(e.getConstraintViolations()).containsOnlyViolations(violationOf(Size.class).withMessage("size must be between 0 and 5"), violationOf(Size.class).withMessage("size must be between 3 and 10"), violationOf(Size.class).withMessage("size must be between 3 and 10"), violationOf(Min.class).withMessage("must be greater than or equal to 1"), violationOf(Min.class).withMessage("must be greater than or equal to 1"));
    }
}
Also used : ConstraintMapping(org.hibernate.validator.cfg.ConstraintMapping) HashMap(java.util.HashMap) Size(jakarta.validation.constraints.Size) MinDef(org.hibernate.validator.cfg.defs.MinDef) Min(jakarta.validation.constraints.Min) ConstraintViolationException(jakarta.validation.ConstraintViolationException) SizeDef(org.hibernate.validator.cfg.defs.SizeDef) Validator(jakarta.validation.Validator) HibernateValidator(org.hibernate.validator.HibernateValidator) Test(org.testng.annotations.Test) TestForIssue(org.hibernate.validator.testutil.TestForIssue)

Example 4 with Size

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

the class ValidatorResolutionTest method testResolutionOfMultipleSizeValidators.

@Test
public void testResolutionOfMultipleSizeValidators() {
    Validator validator = ValidatorUtil.getValidator();
    Suburb suburb = new Suburb();
    List<Integer> postcodes = new ArrayList<Integer>();
    postcodes.add(12345);
    suburb.setIncludedPostCodes(postcodes);
    // all values are null and should pass
    Set<ConstraintViolation<Suburb>> constraintViolations = validator.validate(suburb);
    assertNoViolations(constraintViolations);
    suburb.setName("");
    constraintViolations = validator.validate(suburb);
    assertThat(constraintViolations).containsOnlyViolations(violationOf(Size.class).withMessage("size must be between 5 and 10").withProperty("name").withRootBeanClass(Suburb.class).withInvalidValue(""));
    suburb.setName("Hoegsbo");
    constraintViolations = validator.validate(suburb);
    assertNoViolations(constraintViolations);
    suburb.addFacility(Suburb.Facility.SHOPPING_MALL, false);
    constraintViolations = validator.validate(suburb);
    assertThat(constraintViolations).containsOnlyViolations(violationOf(Size.class).withMessage("size must be between 2 and 2").withProperty("facilities").withRootBeanClass(Suburb.class).withInvalidValue(suburb.getFacilities()));
    suburb.addFacility(Suburb.Facility.BUS_TERMINAL, true);
    constraintViolations = validator.validate(suburb);
    assertNoViolations(constraintViolations);
    suburb.addStreetName("Sikelsgatan");
    constraintViolations = validator.validate(suburb);
    assertThat(constraintViolations).containsOnlyViolations(violationOf(Size.class).withMessage("size must be between 2 and 2147483647").withProperty("streetNames").withRootBeanClass(Suburb.class).withInvalidValue(suburb.getStreetNames()));
    suburb.addStreetName("Marklandsgatan");
    constraintViolations = validator.validate(suburb);
    assertNoViolations(constraintViolations);
    Coordinate[] boundingBox = new Coordinate[3];
    boundingBox[0] = new Coordinate(0L, 0L);
    boundingBox[1] = new Coordinate(0L, 1L);
    boundingBox[2] = new Coordinate(1L, 0L);
    suburb.setBoundingBox(boundingBox);
    constraintViolations = validator.validate(suburb);
    assertThat(constraintViolations).containsOnlyViolations(violationOf(Size.class).withMessage("size must be between 4 and 1000").withProperty("boundingBox").withRootBeanClass(Suburb.class).withInvalidValue(suburb.getBoundingBox()));
    boundingBox = new Coordinate[4];
    boundingBox[0] = new Coordinate(0L, 0L);
    boundingBox[1] = new Coordinate(0L, 1L);
    boundingBox[2] = new Coordinate(1L, 0L);
    boundingBox[3] = new Coordinate(1L, 1L);
    suburb.setBoundingBox(boundingBox);
    constraintViolations = validator.validate(suburb);
    assertNoViolations(constraintViolations);
}
Also used : Size(jakarta.validation.constraints.Size) ConstraintViolation(jakarta.validation.ConstraintViolation) ArrayList(java.util.ArrayList) Validator(jakarta.validation.Validator) Test(org.testng.annotations.Test)

Example 5 with Size

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

the class ExpressionLanguageMessageInterpolationTest method setUp.

@BeforeTest
public void setUp() {
    // Create some annotations for testing using AnnotationProxies
    ConstraintAnnotationDescriptor.Builder<NotNull> notNullAnnotationDescriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(NotNull.class);
    notNullDescriptor = new ConstraintDescriptorImpl<>(ConstraintHelper.forAllBuiltinConstraints(), null, notNullAnnotationDescriptorBuilder.build(), ConstraintLocationKind.FIELD);
    ConstraintAnnotationDescriptor.Builder<Size> sizeAnnotationDescriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>(Size.class);
    sizeDescriptor = new ConstraintDescriptorImpl<>(ConstraintHelper.forAllBuiltinConstraints(), null, sizeAnnotationDescriptorBuilder.build(), ConstraintLocationKind.FIELD);
    interpolatorUnderTest = new ResourceBundleMessageInterpolator();
}
Also used : ResourceBundleMessageInterpolator(org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator) ConstraintAnnotationDescriptor(org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor) Size(jakarta.validation.constraints.Size) NotNull(jakarta.validation.constraints.NotNull) BeforeTest(org.testng.annotations.BeforeTest)

Aggregations

Size (jakarta.validation.constraints.Size)29 Test (org.testng.annotations.Test)22 ConstraintViolationException (jakarta.validation.ConstraintViolationException)16 Validator (jakarta.validation.Validator)15 ConstraintMapping (org.hibernate.validator.cfg.ConstraintMapping)14 TestForIssue (org.hibernate.validator.testutil.TestForIssue)14 SizeDef (org.hibernate.validator.cfg.defs.SizeDef)11 HibernateValidator (org.hibernate.validator.HibernateValidator)8 ConstraintViolation (jakarta.validation.ConstraintViolation)5 ArrayList (java.util.ArrayList)5 Min (jakarta.validation.constraints.Min)4 Pattern (jakarta.validation.constraints.Pattern)4 ExecutableValidator (jakarta.validation.executable.ExecutableValidator)4 NotNull (jakarta.validation.constraints.NotNull)3 List (java.util.List)3 AssertFalse (jakarta.validation.constraints.AssertFalse)2 AssertTrue (jakarta.validation.constraints.AssertTrue)2 DecimalMax (jakarta.validation.constraints.DecimalMax)2 DecimalMin (jakarta.validation.constraints.DecimalMin)2 Max (jakarta.validation.constraints.Max)2