This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new f82b1f6  Fixing NPE in RuntimeCache
f82b1f6 is described below

commit f82b1f6acafb50f4b4ab4c75e6013d7c59025b6c
Author: reta <[email protected]>
AuthorDate: Wed Oct 21 13:24:27 2020 -0400

    Fixing NPE in RuntimeCache
---
 .../apache/cxf/validation/BeanValidationProvider.java | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git 
a/core/src/main/java/org/apache/cxf/validation/BeanValidationProvider.java 
b/core/src/main/java/org/apache/cxf/validation/BeanValidationProvider.java
index 425832b..9652d48 100644
--- a/core/src/main/java/org/apache/cxf/validation/BeanValidationProvider.java
+++ b/core/src/main/java/org/apache/cxf/validation/BeanValidationProvider.java
@@ -36,6 +36,7 @@ import javax.validation.ValidationProviderResolver;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
 import javax.validation.executable.ExecutableValidator;
+import javax.validation.metadata.MethodDescriptor;
 import javax.validation.spi.ValidationProvider;
 
 import org.apache.cxf.common.logging.LogUtils;
@@ -204,15 +205,21 @@ public class BeanValidationProvider implements 
AutoCloseable {
         private final ConcurrentMap<Method, Boolean> returnedValues = new 
ConcurrentHashMap<>();
 
         public boolean shouldValidateParameters(final Validator validator, 
final Method method) {
-            return params.computeIfAbsent(method, m -> 
validator.getConstraintsForClass(m.getDeclaringClass())
-                    .getConstraintsForMethod(m.getName(), 
m.getParameterTypes())
-                    .hasConstrainedParameters());
+            return params.computeIfAbsent(method, m -> {
+                final MethodDescriptor constraint = validator
+                    .getConstraintsForClass(m.getDeclaringClass())
+                    .getConstraintsForMethod(m.getName(), 
m.getParameterTypes());
+                return constraint != null && 
constraint.hasConstrainedParameters();
+            });
         }
 
         public boolean shouldValidateReturnedValue(final Validator validator, 
final Method method) {
-            return returnedValues.computeIfAbsent(method, m -> 
validator.getConstraintsForClass(m.getDeclaringClass())
-                    .getConstraintsForMethod(m.getName(), 
method.getParameterTypes())
-                    .hasConstrainedReturnValue());
+            return returnedValues.computeIfAbsent(method, m -> {
+                final MethodDescriptor constraint = validator
+                    .getConstraintsForClass(m.getDeclaringClass())
+                    .getConstraintsForMethod(m.getName(), 
method.getParameterTypes());
+                return constraint != null && 
constraint.hasConstrainedReturnValue();
+            });
         }
 
         public boolean shouldValidateBean(final Validator validator, final 
Class<?> clazz) {

Reply via email to