diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/validation/ValidatorAdapter.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/validation/ValidatorAdapter.java index 700a68a91610..6e7f41b70076 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/validation/ValidatorAdapter.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/validation/ValidatorAdapter.java @@ -39,6 +39,7 @@ * * @author Stephane Nicoll * @author Phillip Webb + * @author Zisis Pavloudis * @since 2.0.0 */ public class ValidatorAdapter implements SmartValidator, ApplicationContextAware, InitializingBean, DisposableBean { @@ -153,4 +154,20 @@ private static Validator wrap(Validator validator, boolean existingBean) { return validator; } + @Override + @SuppressWarnings("unchecked") + public T unwrap(Class type) { + if (this.target == null) { + return null; + } + if (type.isAssignableFrom(this.target.getClass())) { + if (this.target instanceof SpringValidatorAdapter adapter) { + return adapter.unwrap(type); + } + return (T) this.target; + } + + throw new ValidationException("Cannot unwrap to " + type); + } + }