package com.github.rojanu.config;
import com.github.rojanu.validation.ConstraintViolations;
import com.google.common.collect.ImmutableSet;
import java.util.Set;
import javax.validation.ConstraintViolation;
public class ConfigValidationException extends Exception {
private static final long serialVersionUID = 5325162099634227047L;
private final ImmutableSet<ConstraintViolation<?>> constraintViolations;
public <T> ConfigValidationException(Set<ConstraintViolation<T>> errors) {
super(formatMessage(errors));
this.constraintViolations = ConstraintViolations.copyOf(errors);
}
public ImmutableSet<ConstraintViolation<?>> getConstraintViolations() {
return constraintViolations;
}
protected static <T> String formatMessage(Set<ConstraintViolation<T>> violations) {
final StringBuilder msg = new StringBuilder();
msg.append(violations.size() == 1 ? " has an error:" : " has the following errors:").append("\r\n");
for (ConstraintViolation<?> v : violations) {
msg.append(" * ").append(ConstraintViolations.format(v)).append("\r\n");
}
return msg.toString();
}
}