I have a custom validator, which validates string for regex pattern (later I’ll make it more complicated).
I want to use it for inline validating lot of local String variables in my project, without adding it to the domain model. So as I take, I have have to use programmatic constraint declaration API.
The problem is: I’m unable to get my custom validator to work with constraintDefinition method:
constraintMapping
.constraintDefinition(StringValidator.class )
.validatedBy( StringValidatorImpl.class )
But if I try to do it in another way, it works like a charm:
constraintMapping
.type(String.class)
.constraint(new GenericConstraintDef<StringValidator>( StringValidator.class ) )*
Could you please explain why the second one works and first one not?
Full code
public class DynValidator {
public Validator getValidator() {
HibernateValidatorConfiguration configuration = Validation
.byProvider(HibernateValidator.class)
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.constraintDefinition(StringValidator.class )
.validatedBy( StringValidatorImpl.class )
;
Validator validator = configuration.addMapping(constraintMapping)
.buildValidatorFactory()
.getValidator();
return validator;
}
}