BeanWrapper supports traversal of nested paths with Java 8 Optional declarations

Issue: SPR-12241
This commit is contained in:
Juergen Hoeller
2014-09-24 17:56:24 +02:00
parent 281b243b88
commit 0934751d7a
4 changed files with 143 additions and 9 deletions

View File

@@ -25,6 +25,7 @@ import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
@@ -211,6 +212,18 @@ public class ValidatorFactoryTests {
assertNull(rejected);
}
@Test
public void testValidationWithOptionalField() throws Exception {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.afterPropertiesSet();
MainBeanWithOptional mainBean = new MainBeanWithOptional();
Errors errors = new BeanPropertyBindingResult(mainBean, "mainBean");
validator.validate(mainBean, errors);
Object rejected = errors.getFieldValue("inner.value");
assertNull(rejected);
}
@NameAddressValid
public static class ValidPerson {
@@ -318,6 +331,17 @@ public class ValidatorFactoryTests {
}
public static class MainBeanWithOptional {
@InnerValid
private InnerBean inner = new InnerBean();
public Optional<InnerBean> getInner() {
return Optional.ofNullable(inner);
}
}
public static class InnerBean {
private String value;