import com.mycompany.guodandanexception.EntityValidateFailedException;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class JsrValidator<T> {
private static Validator validator;
public static Validator getValidator() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
return validator;
}
public Boolean isValidatePassed(T domain) throws EntityValidateFailedException {
JsrValidator.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(domain);
StringBuffer sb = new StringBuffer();
if (constraintViolations.size() > 0) {
for (java.util.Iterator<ConstraintViolation<T>> iterator = constraintViolations
.iterator(); iterator.hasNext();) {
ConstraintViolation<T> cnstraintViolation = (ConstraintViolation<T>) iterator.next();
sb.append(cnstraintViolation.getMessage() + "\n");
System.out.println(cnstraintViolation.getMessage());
}
throw new EntityValidateFailedException(domain.getClass().getName() + " : " + domain.toString() + "的实体验证未通过!\n 原因为:\n" + sb.toString());
}
return true;
}
}
public class EntityException extends RuntimeException {
private static final long serialVersionUID = 1L;
public EntityException() {
super("实体异常!");
}
public EntityException(String message) {
super(message);
}
public EntityException(String message, Throwable cause) {
super(message, cause);
}
public EntityException(Throwable cause) {
super(cause);
}
}
public class EntityValidateFailedException extends EntityException {
private static final long serialVersionUID = 1L;
public EntityValidateFailedException() {
super("实体验证未通过!");
}
public EntityValidateFailedException(String message) {
super(message + ",实体验证未通过!");
}
public EntityValidateFailedException(String message, Throwable cause) {
super(message, cause);
}
public EntityValidateFailedException(Throwable cause) {
super(cause);
}
}