LocalValidatorFactoryBean properly supports unwrap at ValidatorFactory level

Also documents limitation for Bean Validation 2.0's getClockProvider() method.

Issue: SPR-15561
Issue: SPR-13482
This commit is contained in:
Juergen Hoeller
2017-05-18 21:00:56 +02:00
parent 67881a5726
commit cb3d1befcd
4 changed files with 63 additions and 7 deletions

View File

@@ -27,6 +27,7 @@ import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
@@ -51,8 +52,9 @@ import static org.junit.Assert.*;
*/
public class SpringValidatorAdapterTests {
private final SpringValidatorAdapter validatorAdapter = new SpringValidatorAdapter(
Validation.buildDefaultValidatorFactory().getValidator());
private final Validator nativeValidator = Validation.buildDefaultValidatorFactory().getValidator();
private final SpringValidatorAdapter validatorAdapter = new SpringValidatorAdapter(nativeValidator);
private final StaticMessageSource messageSource = new StaticMessageSource();
@@ -66,6 +68,12 @@ public class SpringValidatorAdapterTests {
}
@Test
public void testUnwrap() {
Validator nativeValidator = validatorAdapter.unwrap(Validator.class);
assertSame(this.nativeValidator, nativeValidator);
}
@Test // SPR-13406
public void testNoStringArgumentValue() {
TestBean testBean = new TestBean();

View File

@@ -33,9 +33,12 @@ import javax.validation.ConstraintValidatorContext;
import javax.validation.ConstraintViolation;
import javax.validation.Payload;
import javax.validation.Valid;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorFactory;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -75,6 +78,12 @@ public class ValidatorFactoryTests {
fail("Invalid constraint violation with path '" + path + "'");
}
}
Validator nativeValidator = validator.unwrap(Validator.class);
assertTrue(nativeValidator.getClass().getName().startsWith("org.hibernate"));
assertTrue(validator.unwrap(ValidatorFactory.class) instanceof HibernateValidatorFactory);
assertTrue(validator.unwrap(HibernateValidatorFactory.class) instanceof HibernateValidatorFactory);
validator.destroy();
}
@@ -96,6 +105,12 @@ public class ValidatorFactoryTests {
fail("Invalid constraint violation with path '" + path + "'");
}
}
Validator nativeValidator = validator.unwrap(Validator.class);
assertTrue(nativeValidator.getClass().getName().startsWith("org.hibernate"));
assertTrue(validator.unwrap(ValidatorFactory.class) instanceof HibernateValidatorFactory);
assertTrue(validator.unwrap(HibernateValidatorFactory.class) instanceof HibernateValidatorFactory);
validator.destroy();
}
@@ -465,7 +480,7 @@ public class ValidatorFactoryTests {
String message() default "Should not be X";
Class<?>[] groups() default { };
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}