`
TRAMP_ZZY
  • 浏览: 132551 次
社区版块
存档分类
最新评论

Java Validator 泛型化实现

    博客分类:
  • Java
阅读更多

1. Java 的static 方法无法访问泛型类的类型参数,所以如果static 方法需要使用泛型能力,就必须使其称为泛型方法。

public class DomainObjectValidator {
    private static final Logger LOGGER = LoggerFactory.getLogger(DomainObjectValidator.class);

    public static Validator getInstance() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        return factory.getValidator();
    }

    public static <T>  boolean isDomainObjectValid(T object) {
        boolean result = true;
        if (object != null) {
            Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
            if (constraintViolations.size() > 0) {
                result = false;
                for (ConstraintViolation violation : constraintViolations) {
                    LOGGER.info("filed={}, msg={}, currentValue={}.",
                            violation.getPropertyPath().toString(),
                            Objects.toString(violation.getMessage()),
                            Objects.toString(violation.getInvalidValue())
                    );
                }
            }
        }
        return result;
    }

    public static <T> Set<ValidateMessage> validateDomainObject(T object) {
        Set<ValidateMessage> validateMessageSet = new HashSet<>();
        if (object != null) {
            Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
            if (constraintViolations.size() > 0) {
                for (ConstraintViolation violation : constraintViolations) {
                    ValidateMessage message = new ValidateMessage(
                            violation.getPropertyPath().toString(),
                            Objects.toString(violation.getMessage()),
                            Objects.toString(violation.getInvalidValue())
                    );
                    validateMessageSet.add(message);
                }
            }
        }
        return validateMessageSet;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics