From 35751cbfae8e6543f312bd3244448ed1d4df9eb4 Mon Sep 17 00:00:00 2001 From: Mengyang Tang Date: Mon, 27 Mar 2023 10:04:14 +0800 Subject: [PATCH] Remove logic to simplify ConstraintViolationException to ValidationException. (#11883) --- .../support/jvalidation/JValidator.java | 70 +++++++++---------- .../support/jvalidation/JValidatorNew.java | 70 +++++++++---------- 2 files changed, 64 insertions(+), 76 deletions(-) diff --git a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java index f5c06a7bba..7051ab2176 100644 --- a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java +++ b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java @@ -51,7 +51,6 @@ import javax.validation.Constraint; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.Validation; -import javax.validation.ValidationException; import javax.validation.ValidatorFactory; import javax.validation.groups.Default; import java.lang.annotation.Annotation; @@ -126,8 +125,8 @@ public class JValidator implements Validator { /** * try to generate methodParameterClass. * - * @param clazz interface class - * @param method invoke method + * @param clazz interface class + * @param method invoke method * @param parameterClassName generated parameterClassName * @return Class generated methodParameterClass * @throws Exception @@ -188,9 +187,9 @@ public class JValidator implements Validator { private static String generateMethodParameterClassName(Class clazz, Method method) { StringBuilder builder = new StringBuilder().append(clazz.getName()) - .append('_') - .append(toUpperMethoName(method.getName())) - .append("Parameter"); + .append('_') + .append(toUpperMethoName(method.getName())) + .append("Parameter"); Class[] parameterTypes = method.getParameterTypes(); for (Class parameterType : parameterTypes) { @@ -259,42 +258,37 @@ public class JValidator implements Validator { @Override public void validate(String methodName, Class[] parameterTypes, Object[] arguments) throws Exception { - try { - List> groups = new ArrayList<>(); - Class methodClass = methodClass(methodName); - if (methodClass != null) { - groups.add(methodClass); - } - Set> violations = new HashSet<>(); - Method method = clazz.getMethod(methodName, parameterTypes); - Class[] methodClasses; - if (method.isAnnotationPresent(MethodValidated.class)){ - methodClasses = method.getAnnotation(MethodValidated.class).value(); - groups.addAll(Arrays.asList(methodClasses)); - } - // add into default group - groups.add(0, Default.class); - groups.add(1, clazz); + List> groups = new ArrayList<>(); + Class methodClass = methodClass(methodName); + if (methodClass != null) { + groups.add(methodClass); + } + Set> violations = new HashSet<>(); + Method method = clazz.getMethod(methodName, parameterTypes); + Class[] methodClasses; + if (method.isAnnotationPresent(MethodValidated.class)) { + methodClasses = method.getAnnotation(MethodValidated.class).value(); + groups.addAll(Arrays.asList(methodClasses)); + } + // add into default group + groups.add(0, Default.class); + groups.add(1, clazz); - // convert list to array - Class[] classgroups = groups.toArray(new Class[groups.size()]); + // convert list to array + Class[] classgroups = groups.toArray(new Class[groups.size()]); - Object parameterBean = getMethodParameterBean(clazz, method, arguments); - if (parameterBean != null) { - violations.addAll(validator.validate(parameterBean, classgroups )); - } + Object parameterBean = getMethodParameterBean(clazz, method, arguments); + if (parameterBean != null) { + violations.addAll(validator.validate(parameterBean, classgroups)); + } - for (Object arg : arguments) { - validate(violations, arg, classgroups); - } + for (Object arg : arguments) { + validate(violations, arg, classgroups); + } - if (!violations.isEmpty()) { - logger.info("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations); - throw new ConstraintViolationException("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations, violations); - } - } catch (ValidationException e) { - // only use exception's message to avoid potential serialization issue - throw new ValidationException(e.getMessage()); + if (!violations.isEmpty()) { + logger.info("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations); + throw new ConstraintViolationException("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations, violations); } } diff --git a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidatorNew.java b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidatorNew.java index c52d1a85c1..fca479c76f 100644 --- a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidatorNew.java +++ b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidatorNew.java @@ -28,7 +28,6 @@ import jakarta.validation.Constraint; import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import jakarta.validation.Validation; -import jakarta.validation.ValidationException; import jakarta.validation.ValidatorFactory; import jakarta.validation.groups.Default; import javassist.ClassPool; @@ -126,8 +125,8 @@ public class JValidatorNew implements Validator { /** * try to generate methodParameterClass. * - * @param clazz interface class - * @param method invoke method + * @param clazz interface class + * @param method invoke method * @param parameterClassName generated parameterClassName * @return Class generated methodParameterClass * @throws Exception @@ -188,9 +187,9 @@ public class JValidatorNew implements Validator { private static String generateMethodParameterClassName(Class clazz, Method method) { StringBuilder builder = new StringBuilder().append(clazz.getName()) - .append('_') - .append(toUpperMethoName(method.getName())) - .append("Parameter"); + .append('_') + .append(toUpperMethoName(method.getName())) + .append("Parameter"); Class[] parameterTypes = method.getParameterTypes(); for (Class parameterType : parameterTypes) { @@ -259,42 +258,37 @@ public class JValidatorNew implements Validator { @Override public void validate(String methodName, Class[] parameterTypes, Object[] arguments) throws Exception { - try { - List> groups = new ArrayList<>(); - Class methodClass = methodClass(methodName); - if (methodClass != null) { - groups.add(methodClass); - } - Set> violations = new HashSet<>(); - Method method = clazz.getMethod(methodName, parameterTypes); - Class[] methodClasses; - if (method.isAnnotationPresent(MethodValidated.class)){ - methodClasses = method.getAnnotation(MethodValidated.class).value(); - groups.addAll(Arrays.asList(methodClasses)); - } - // add into default group - groups.add(0, Default.class); - groups.add(1, clazz); + List> groups = new ArrayList<>(); + Class methodClass = methodClass(methodName); + if (methodClass != null) { + groups.add(methodClass); + } + Set> violations = new HashSet<>(); + Method method = clazz.getMethod(methodName, parameterTypes); + Class[] methodClasses; + if (method.isAnnotationPresent(MethodValidated.class)) { + methodClasses = method.getAnnotation(MethodValidated.class).value(); + groups.addAll(Arrays.asList(methodClasses)); + } + // add into default group + groups.add(0, Default.class); + groups.add(1, clazz); - // convert list to array - Class[] classgroups = groups.toArray(new Class[groups.size()]); + // convert list to array + Class[] classgroups = groups.toArray(new Class[groups.size()]); - Object parameterBean = getMethodParameterBean(clazz, method, arguments); - if (parameterBean != null) { - violations.addAll(validator.validate(parameterBean, classgroups )); - } + Object parameterBean = getMethodParameterBean(clazz, method, arguments); + if (parameterBean != null) { + violations.addAll(validator.validate(parameterBean, classgroups)); + } - for (Object arg : arguments) { - validate(violations, arg, classgroups); - } + for (Object arg : arguments) { + validate(violations, arg, classgroups); + } - if (!violations.isEmpty()) { - logger.info("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations); - throw new ConstraintViolationException("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations, violations); - } - } catch (ValidationException e) { - // only use exception's message to avoid potential serialization issue - throw new ValidationException(e.getMessage()); + if (!violations.isEmpty()) { + logger.info("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations); + throw new ConstraintViolationException("Failed to validate service: " + clazz.getName() + ", method: " + methodName + ", cause: " + violations, violations); } }