package org.mongodb.morphia;
import org.mongodb.morphia.utils.Assert;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.Set;
/**
* @author us@thomas-daily.de
*/
public class VerboseJSR303ConstraintViolationException extends ConstraintViolationException {
/**
* Creates a VerboseJSR303ConstraintViolationException
* @param vio the violations
*/
public VerboseJSR303ConstraintViolationException(final Set<ConstraintViolation<?>> vio) {
super(createVerboseMessage(vio), vio);
Assert.parameterNotNull("vio", vio);
}
private static String createVerboseMessage(final Set<ConstraintViolation<?>> vio) {
final StringBuilder sb = new StringBuilder(128);
sb.append("The following constraints have been violated:\n");
for (final ConstraintViolation<?> c : vio) {
sb.append(c.getRootBeanClass().getSimpleName());
sb.append(".");
sb.append(c.getPropertyPath());
sb.append(": ");
sb.append(c.getMessage());
sb.append(" ('");
sb.append(c.getInvalidValue());
sb.append("')\n");
}
return sb.toString();
}
}