// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.core.domain.validation; import java.util.Set; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; public class ElementLengthSetValidator implements ConstraintValidator<ElementLength, Set<? extends CharSequence>> { private int min; private int max; private String message; @Override public void initialize(ElementLength constraintAnnotation) { this.min = constraintAnnotation.min(); this.max = constraintAnnotation.max(); this.message = constraintAnnotation.message(); } @Override public boolean isValid(Set<? extends CharSequence> set, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); boolean ok = true; if (set != null) { int i = 0; for (CharSequence val : set) { if (val != null && (val.length() < min || val.length() > max)) { context.buildConstraintViolationWithTemplate(message) .addBeanNode().inIterable().atIndex(i).addConstraintViolation(); ok=false; } i++; } } return ok; } }