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;
