Polishing

This commit is contained in:
Juergen Hoeller
2024-06-17 18:42:37 +02:00
parent e79a9a5bff
commit 9a56a8877f

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 {