the model is generated by some tools. Particular fields are annotated by for instance @NotNull annotation. I cannot modify generated classes. I need to do additonal validation of generated classes like check that value of the string field does't contain empty string and then throw ConstraintViolationException. Currently I iterate over the class to find field type of String and then in case of empty string I need to implement my own ConstraintViolation interface which is deadly hard. So it looks like that:
Validator validator = Validation.buildDefaultValidatorFactory()
.getValidator();
Set< ConstraintViolation< E > > validationErrors = validator.validate(aEntity);
Field[] fields = aEntity.getClass().getDeclaredFields();
for (Field f : fields) {
Class<?> type = f.getType();
if (type == String.class) {
try {
String v = (String) f.get(aEntity);
// check that value is not an empty string
if (v == null || !v.trim().isEmpty()) {
validationErrors.add(new ConstraintViolation<E>() {
@Override
public String getMessage() {
return null;
}
@Override
public String getMessageTemplate() {
return null;
}
@Override
public E getRootBean() {
return null;
}
@Override
public Class<E> getRootBeanClass() {
return null;
}
@Override
public Object getLeafBean() {
return null;
}
@Override
public Object[] getExecutableParameters() {
return new Object[0];
}
@Override
public Object getExecutableReturnValue() {
return null;
}
@Override
public Path getPropertyPath() {
return null;
}
@Override
public Object getInvalidValue() {
return null;
}
@Override
public ConstraintDescriptor<?> getConstraintDescriptor() {
return null;
}
@Override
public <U> U unwrap(Class<U> type) {
return null;
}
});
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
Is it possible to make this easier?