Polishing

This commit is contained in:
Juergen Hoeller 2024-06-17 18:42:37 +02:00
parent e79a9a5bff
commit 9a56a8877f
1 changed files with 13 additions and 17 deletions

View File

@ -234,8 +234,8 @@ public class MethodValidationAdapter implements MethodValidator {
@Override
public final MethodValidationResult validateArguments(
Object target, Method method, @Nullable MethodParameter[] parameters, Object[] arguments,
Class<?>[] groups) {
Object target, Method method, @Nullable MethodParameter[] parameters,
Object[] arguments, Class<?>[] groups) {
Set<ConstraintViolation<Object>> violations =
invokeValidatorForArguments(target, method, arguments, groups);
@ -256,23 +256,21 @@ public class MethodValidationAdapter implements MethodValidator {
Object target, Method method, Object[] arguments, Class<?>[] groups) {
ExecutableValidator execVal = this.validator.get().forExecutables();
Set<ConstraintViolation<Object>> violations;
try {
violations = execVal.validateParameters(target, method, arguments, groups);
return execVal.validateParameters(target, method, arguments, groups);
}
catch (IllegalArgumentException ex) {
// Probably a generic type mismatch between interface and impl as reported in SPR-12237 / HV-1011
// Let's try to find the bridged method on the implementation class...
Method bridgedMethod = BridgeMethodResolver.getMostSpecificMethod(method, target.getClass());
violations = execVal.validateParameters(target, bridgedMethod, arguments, groups);
return execVal.validateParameters(target, bridgedMethod, arguments, groups);
}
return violations;
}
@Override
public final MethodValidationResult validateReturnValue(
Object target, Method method, @Nullable MethodParameter returnType, @Nullable Object returnValue,
Class<?>[] groups) {
Object target, Method method, @Nullable MethodParameter returnType,
@Nullable Object returnValue, Class<?>[] groups) {
Set<ConstraintViolation<Object>> violations =
invokeValidatorForReturnValue(target, method, returnValue, groups);
@ -305,9 +303,9 @@ public class MethodValidationAdapter implements MethodValidator {
Map<Path.Node, ParamErrorsBuilder> nestedViolations = new LinkedHashMap<>();
for (ConstraintViolation<Object> violation : violations) {
Iterator<Path.Node> itr = violation.getPropertyPath().iterator();
while (itr.hasNext()) {
Path.Node node = itr.next();
Iterator<Path.Node> nodes = violation.getPropertyPath().iterator();
while (nodes.hasNext()) {
Path.Node node = nodes.next();
MethodParameter parameter;
if (node.getKind().equals(ElementKind.PARAMETER)) {
@ -328,8 +326,8 @@ public class MethodValidationAdapter implements MethodValidator {
// https://github.com/jakartaee/validation/issues/194
Path.Node parameterNode = node;
if (itr.hasNext()) {
node = itr.next();
if (nodes.hasNext()) {
node = nodes.next();
}
Object value;
@ -425,7 +423,6 @@ public class MethodValidationAdapter implements MethodValidator {
* @return the name to use
*/
String resolveName(MethodParameter parameter, @Nullable Object value);
}
@ -456,6 +453,7 @@ public class MethodValidationAdapter implements MethodValidator {
public ParamValidationResultBuilder(
Object target, MethodParameter parameter, @Nullable Object value, @Nullable Object container,
@Nullable Integer containerIndex, @Nullable Object containerKey) {
this.target = target;
this.parameter = parameter;
this.value = value;
@ -473,7 +471,6 @@ public class MethodValidationAdapter implements MethodValidator {
this.parameter, this.value, this.resolvableErrors, this.container,
this.containerIndex, this.containerKey);
}
}
@ -527,8 +524,7 @@ public class MethodValidationAdapter implements MethodValidator {
/**
* Default algorithm to select an object name, as described in
* {@link #setObjectNameResolver(ObjectNameResolver)}.
* Default algorithm to select an object name, as described in {@link #setObjectNameResolver}.
*/
private static class DefaultObjectNameResolver implements ObjectNameResolver {