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;
}