You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2018/02/28 17:30:11 UTC

[2/3] bval git commit: skip proxy classes when computing descriptors

skip proxy classes when computing descriptors


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

Branch: refs/heads/bv2
Commit: 142776cbe8b19d0bcba0d2d5ddd9a8669741ef54
Parents: 97778e4
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 28 11:29:33 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 28 11:29:33 2018 -0600

----------------------------------------------------------------------
 .../main/java/org/apache/bval/jsr/job/ValidationJob.java |  5 +++--
 .../org/apache/bval/jsr/metadata/HierarchyBuilder.java   | 11 ++++++++---
 .../src/main/java/org/apache/bval/jsr/util/Proxies.java  |  2 +-
 3 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/142776cb/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
index c97cbfd..dbcdc1c 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
@@ -64,6 +64,7 @@ import org.apache.bval.jsr.groups.Group;
 import org.apache.bval.jsr.groups.Groups;
 import org.apache.bval.jsr.util.NodeImpl;
 import org.apache.bval.jsr.util.PathImpl;
+import org.apache.bval.jsr.util.Proxies;
 import org.apache.bval.util.Exceptions;
 import org.apache.bval.util.Lazy;
 import org.apache.bval.util.ObjectUtils;
@@ -402,8 +403,8 @@ public abstract class ValidationJob<T> {
     }
 
     private BeanD getBeanDescriptor(Object bean) {
-        return (BeanD) validatorContext.getFactory().getDescriptorManager()
-            .getBeanDescriptor(Validate.notNull(bean, "bean").getClass());
+        final Class<? extends Object> t = Proxies.classFor(Validate.notNull(bean, "bean").getClass());
+        return (BeanD) validatorContext.getDescriptorManager().getBeanDescriptor(t);
     }
 
     final ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,

http://git-wip-us.apache.org/repos/asf/bval/blob/142776cb/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
index d185290..975a9f4 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
@@ -45,6 +45,7 @@ import javax.validation.metadata.Scope;
 import org.apache.bval.jsr.ApacheValidatorFactory;
 import org.apache.bval.jsr.groups.GroupConversion;
 import org.apache.bval.jsr.util.Methods;
+import org.apache.bval.jsr.util.Proxies;
 import org.apache.bval.util.Exceptions;
 import org.apache.bval.util.Validate;
 import org.apache.bval.util.reflection.Reflection;
@@ -282,9 +283,9 @@ public class HierarchyBuilder extends CompositeBuilder {
         final Iterator<Class<?>> hierarchy = Reflection.hierarchy(beanClass, Interfaces.INCLUDE).iterator();
         hierarchy.next();
 
-        // skip core JDK; skip null/empty hierarchy builders, mapping others to BeanDelegate
-        hierarchy.forEachRemaining(t -> Optional.of(t).filter(clazz -> !clazz.getName().startsWith("java."))
-            .map(getBeanBuilder).filter(b -> !b.isEmpty()).map(b -> new BeanDelegate(b, t)).ifPresent(delegates::add));
+        // filter; map; skip null/empty hierarchy builders, mapping others to BeanDelegate
+        hierarchy.forEachRemaining(t -> Optional.of(t).filter(this::canValidate).map(getBeanBuilder)
+            .filter(b -> !b.isEmpty()).map(b -> new BeanDelegate(b, t)).ifPresent(delegates::add));
 
         // if we have nothing but empty builders (which should only happen for
         // absent custom metadata), return empty:
@@ -350,4 +351,8 @@ public class HierarchyBuilder extends CompositeBuilder {
                 .collect(Collectors.toList());
         return new HierarchyBuilder.ForCrossParameter<>(hierarchyDelegates);
     }
+
+    private boolean canValidate(Class<?> t) {
+        return !(t.getName().startsWith("java.") || Proxies.isProxyClass(t));
+    }
 }

http://git-wip-us.apache.org/repos/asf/bval/blob/142776cb/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
index 1d0c1ee..b6906f6 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
@@ -42,7 +42,7 @@ public final class Proxies {
         return clazz;
     }
 
-    private static boolean isProxyClass(Class<?> clazz) {
+    public static boolean isProxyClass(Class<?> clazz) {
         if (KNOWN_PROXY_CLASSNAMES.contains(clazz.getName())) {
             return true;
         }