rmannibucau commented on a change in pull request #695:
URL: https://github.com/apache/cxf/pull/695#discussion_r491800652



##########
File path: 
core/src/main/java/org/apache/cxf/validation/BeanValidationProvider.java
##########
@@ -111,46 +142,81 @@ private static void initFactoryConfig(Configuration<?> 
factoryCfg, ValidationCon
     }
 
     public< T > void validateParameters(final T instance, final Method method, 
final Object[] arguments) {
-
-        final ExecutableValidator methodValidator = getExecutableValidator();
-        final Set< ConstraintViolation< T > > violations = 
methodValidator.validateParameters(instance,
-            method, arguments);
-
-        if (!violations.isEmpty()) {
-            throw new ConstraintViolationException(violations);
+        final Validator validator = factory.get();
+        final ExecutableValidator methodValidator = validator.forExecutables();
+        if (runtimeCache == null || 
runtimeCache.shouldValidateParameters(validator, method)) {
+            final Set<ConstraintViolation<T>> violations = 
methodValidator.validateParameters(instance,
+                    method, arguments);
+            if (!violations.isEmpty()) {
+                throw new ConstraintViolationException(violations);
+            }
         }
     }
 
     public< T > void validateReturnValue(final T instance, final Method 
method, final Object returnValue) {
-        final ExecutableValidator methodValidator = getExecutableValidator();
-        final Set<ConstraintViolation< T > > violations = 
methodValidator.validateReturnValue(instance,
-            method, returnValue);
-
-        if (!violations.isEmpty()) {
-            throw new ResponseConstraintViolationException(violations);
+        final Validator validator = factory.get();
+        final ExecutableValidator methodValidator = validator.forExecutables();
+        if (runtimeCache == null || 
runtimeCache.shouldValidateReturnedValue(validator, method)) {
+            final Set<ConstraintViolation<T>> violations = 
methodValidator.validateReturnValue(instance,
+                    method, returnValue);
+            if (!violations.isEmpty()) {
+                throw new ResponseConstraintViolationException(violations);
+            }
         }
     }
 
     public< T > void validateReturnValue(final T bean) {
-        final Set<ConstraintViolation< T > > violations = doValidateBean(bean);
+        Validator validator = factory.get();
+        if (runtimeCache != null && bean != null
+                && !runtimeCache.shouldValidateBean(validator, 
bean.getClass())) {
+            return;
+        }
+        final Set<ConstraintViolation< T > > violations = 
doValidateBean(validator, bean);
         if (!violations.isEmpty()) {
             throw new ResponseConstraintViolationException(violations);
         }
     }
 
     public< T > void validateBean(final T bean) {
-        final Set<ConstraintViolation< T > > violations = doValidateBean(bean);
+        final Set<ConstraintViolation< T > > violations = 
doValidateBean(factory.get(), bean);
         if (!violations.isEmpty()) {
             throw new ConstraintViolationException(violations);
         }
     }
 
-    private< T > Set<ConstraintViolation< T > > doValidateBean(final T bean) {
-        return factory.getValidator().validate(bean);
+    private< T > Set<ConstraintViolation< T > > doValidateBean(final Validator 
validator, final T bean) {
+        if 
(validator.getConstraintsForClass(bean.getClass()).isBeanConstrained()) {

Review comment:
       think this call is always protected by a public call before which 
already have the exit condition - at least was the intent




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to