package org.ovirt.engine.core.common.validation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.common.validation.annotation.Cidr;
public class CidrConstraint implements ConstraintValidator<Cidr, String> {
@Override
public void initialize(Cidr constraintAnnotation) {
}
@Override
public boolean isValid(String cidr, ConstraintValidatorContext context) {
if (!isCidrFormatValid(cidr)) {
return failWith(context, EngineMessage.BAD_CIDR_FORMAT.name());
}
if (!isCidrNetworkAddressValid(cidr)) {
return failWith(context, EngineMessage.CIDR_NOT_NETWORK_ADDRESS.name());
}
return true;
}
private boolean failWith(ConstraintValidatorContext context, String message) {
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(message)
.addNode("cidr")
.addConstraintViolation();
return false;
}
private boolean isCidrFormatValid(String cidr) {
return getCidrValidator().isCidrFormatValid(cidr);
}
private boolean isCidrNetworkAddressValid(String cidr) {
return getCidrValidator().isCidrNetworkAddressValid(cidr);
}
CidrValidator getCidrValidator() {
return CidrValidator.getInstance();
}
}