Inject the ValidatorFactory instead of Validator.

This prevents the Spring Validator Factory from being injected (it
does not support the 1.1 methods)
This commit is contained in:
Eric Bottard
2017-09-11 17:16:43 +02:00
parent 8f3c11a3bd
commit 4a6c699aca
5 changed files with 34 additions and 9 deletions

View File

@@ -45,6 +45,7 @@ import com.beust.jcommander.ParametersDelegate;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.metadata.BeanDescriptor;
import javax.validation.metadata.MethodDescriptor;
import javax.validation.metadata.ParameterDescriptor;
@@ -59,9 +60,13 @@ public class JCommanderParameterResolver implements ParameterResolver {
private static final Collection<Class<? extends Annotation>> JCOMMANDER_ANNOTATIONS =
Arrays.asList(Parameter.class, DynamicParameter.class, ParametersDelegate.class);
@Autowired(required = false)
private Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
@Autowired(required = false)
public void setValidatorFactory(ValidatorFactory validatorFactory) {
this.validator = validatorFactory.getValidator();
}
@Override
public boolean supports(MethodParameter parameter) {
AtomicBoolean isSupported = new AtomicBoolean(false);