Improve method validation for container elements
This change moves container element properties from ParameterErrors to base class ParameterValidationResult, and makes that support independent of whether violations are nested within a container element bean or through constraints on container elements, e.g. `List<@NotBlank String>`. Closes gh-31887
This commit is contained in:
@@ -161,7 +161,7 @@ class MethodValidationAdapterTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateListArgument() {
|
||||
void validateBeanListArgument() {
|
||||
MyService target = new MyService();
|
||||
Method method = getMethod(target, "addPeople");
|
||||
|
||||
@@ -195,6 +195,24 @@ class MethodValidationAdapterTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateValueListArgument() {
|
||||
MyService target = new MyService();
|
||||
Method method = getMethod(target, "addHobbies");
|
||||
|
||||
testArgs(target, method, new Object[] {List.of(" ")}, ex -> {
|
||||
|
||||
assertThat(ex.getAllValidationResults()).hasSize(1);
|
||||
|
||||
assertValueResult(ex.getValueResults().get(0), 0, " ", List.of("""
|
||||
org.springframework.context.support.DefaultMessageSourceResolvable: \
|
||||
codes [NotBlank.myService#addHobbies.hobbies,NotBlank.hobbies,NotBlank.java.util.List,NotBlank]; \
|
||||
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: \
|
||||
codes [myService#addHobbies.hobbies,hobbies]; \
|
||||
arguments []; default message [hobbies]]; default message [must not be blank]"""));
|
||||
});
|
||||
}
|
||||
|
||||
private void testArgs(Object target, Method method, Object[] args, Consumer<MethodValidationResult> consumer) {
|
||||
consumer.accept(this.validationAdapter.validateArguments(target, method, null, args, new Class<?>[0]));
|
||||
}
|
||||
@@ -250,6 +268,9 @@ class MethodValidationAdapterTests {
|
||||
public void addPeople(@Valid List<Person> people) {
|
||||
}
|
||||
|
||||
public void addHobbies(List<@NotBlank String> hobbies) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user