efficiency

Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/6cb30930
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/6cb30930
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/6cb30930

Branch: refs/heads/master
Commit: 6cb3093068bab8f70cdeb4d370f7318c817fffcf
Parents: 796a2ca
Author: Matt Benson <[email protected]>
Authored: Wed Oct 17 16:35:47 2018 -0500
Committer: Matt Benson <[email protected]>
Committed: Wed Oct 17 16:35:47 2018 -0500

----------------------------------------------------------------------
 .../bval/jsr/descriptor/DescriptorManager.java     | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/6cb30930/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java
----------------------------------------------------------------------
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java
index f25514c..caa9bb3 100644
--- 
a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java
+++ 
b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java
@@ -76,16 +76,19 @@ public class DescriptorManager {
         if (beanDescriptors.containsKey(beanClass)) {
             return beanDescriptors.get(beanClass);
         }
-        final MetadataBuilder.ForBean<T> builder =
-            knownUnconstrainedTypes.contains(beanClass) ? 
EmptyBuilder.instance().forBean() : builder(beanClass);
+        final boolean constrained = 
!knownUnconstrainedTypes.contains(beanClass);
+        final MetadataBuilder.ForBean<T> builder = constrained ? 
builder(beanClass) : EmptyBuilder.instance().forBean();
         final BeanD<T> beanD = new BeanD<>(new 
MetadataReader(validatorFactory, beanClass).forBean(builder));
 
-        if (beanD.isBeanConstrained() || 
!(beanD.getConstrainedConstructors().isEmpty()
-            && beanD.getConstrainedMethods(MethodType.GETTER, 
MethodType.NON_GETTER).isEmpty())) {
-            @SuppressWarnings("unchecked")
-            final BeanD<T> result =
+        if (constrained) {
+            // if not previously known to be unconstrained, check:
+            if (beanD.isBeanConstrained() || 
!(beanD.getConstrainedConstructors().isEmpty()
+                    && beanD.getConstrainedMethods(MethodType.GETTER, 
MethodType.NON_GETTER).isEmpty())) {
+                @SuppressWarnings("unchecked")
+                final BeanD<T> result =
                 Optional.ofNullable((BeanD<T>) 
beanDescriptors.putIfAbsent(beanClass, beanD)).orElse(beanD);
-            return result;
+                return result;
+            }
         }
         knownUnconstrainedTypes.add(beanClass);
         return beanD;

Reply via email to