package org.ovirt.engine.core.common.validation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.common.config.ConfigCommon;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.common.validation.annotation.ConfiguredRange;
public class ConfiguredRangeValidator implements ConstraintValidator<ConfiguredRange, Integer> {
private int min;
private int max;
private String rangeMessage;
@Override
public void initialize(ConfiguredRange constraintAnnotation) {
if (constraintAnnotation.minConfigValue() != ConfigValues.Invalid) {
min = Config.<Integer> getValue(constraintAnnotation.minConfigValue(), ConfigCommon.defaultConfigurationVersion);
} else {
min = constraintAnnotation.min();
}
max = Config.<Integer> getValue(constraintAnnotation.maxConfigValue(), ConfigCommon.defaultConfigurationVersion);
/* this is to interpolate "${range}" in Validates */
rangeMessage = "$range " + min + "-" + max;
}
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
boolean result = value == null ? true : value >= min && value <= max;
if (!result) {
/* this will add a constraint message with interpolated variable for can do actions */
context.buildConstraintViolationWithTemplate(rangeMessage).addConstraintViolation();
}
return result;
}
}