验证OSGi中的Pojo

时间:2014-11-03 14:20:30

标签: java maven osgi

我会在我的OSGi中用HibernateValidator验证我的anootated pojos(JSR 303)。 单元测试工作正常,但在OSGi上它没有工作。

这是我的验证方法:

public static void validate(Object o) throws ValidationException {

    ValidatorFactory factory = Validation.byDefaultProvider().providerResolver(new OSGiServiceDiscoverer()).configure()
            .buildValidatorFactory();
    Validator validator = factory.getValidator();

    Set<ConstraintViolation<Object>> validatorResult = null;

    if (o instanceof MessageContentsList) {
        MessageContentsList messageList = (MessageContentsList) o;
        validatorResult = validator.validate(messageList.get(0));
    } else {
        validatorResult = validator.validate(o);
    }

    if (!validatorResult.isEmpty()) {
        StringBuffer sb = new StringBuffer();
        for (ConstraintViolation<Object> v : validatorResult) {
            sb.append(v.getPropertyPath() + " " + v.getMessage() + ", ");
        }

        String msg = sb.toString().substring(0, sb.toString().length() - 1);

        throw new ValidationException(msg);
    }
}

这里是发现者:

public class OSGiServiceDiscoverer implements ValidationProviderResolver {

    @Override
    public List<ValidationProvider<?>> getValidationProviders() {
        List<ValidationProvider<?>> providers = new ArrayList<ValidationProvider<?>>(1);
        providers.add(new HibernateValidator());
        return providers;
    }
}

在pom中,我为OSGi添加了以下导入:

javax.validation,
javax.validation.bootstrap,
javax.validation.constraints,
javax.validation.spi,
org.hibernate.validator,

有人知道我做错了吗?

THX

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。 原因是,带注释的类在单独的包中而不是验证,并且我没有添加javax.validation依赖项。因此,注释被忽略,验证没有功能