package alien4cloud.tosca.container.validation; import java.util.List; import java.util.Set; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.alien4cloud.tosca.model.definitions.PropertyConstraint; import com.google.common.collect.Sets; public class ToscaPropertyConstraintDuplicateValidator implements ConstraintValidator<ToscaPropertyConstraintDuplicate, List<PropertyConstraint>> { @Override public void initialize(ToscaPropertyConstraintDuplicate constraintAnnotation) { } @Override public boolean isValid(List<PropertyConstraint> value, ConstraintValidatorContext context) { if(value == null) { return true; } Set<String> definedConstraints = Sets.newHashSet(); boolean isValid = true; for (int i = 0; i < value.size(); i++) { PropertyConstraint constraint = value.get(i); if (!definedConstraints.add(constraint.getClass().getName())) { context.buildConstraintViolationWithTemplate("CONSTRAINTS.VALIDATION.DUPLICATED_CONSTRAINT").addBeanNode().inIterable() .atIndex(i).addConstraintViolation(); isValid = false; } } return isValid; } }