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 2016/10/19 21:14:24 UTC
svn commit: r1765722 -
/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
Author: mbenson
Date: Wed Oct 19 21:14:24 2016
New Revision: 1765722
URL: http://svn.apache.org/viewvc?rev=1765722&view=rev
Log:
[BVAL-137] Attempt to skip Weld proxy classes when discovering method validation metadata
Modified:
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
Modified: bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java
URL: http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java?rev=1765722&r1=1765721&r2=1765722&view=diff
==============================================================================
--- bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java (original)
+++ bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/Proxies.java Wed Oct 19 21:14:24 2016
@@ -18,7 +18,19 @@
*/
package org.apache.bval.jsr.util;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
public final class Proxies {
+ private static final Set<String> KNOWN_PROXY_CLASSNAMES;
+
+ static {
+ final Set<String> s = new HashSet<String>();
+ s.add("org.jboss.weld.bean.proxy.ProxyObject");
+ KNOWN_PROXY_CLASSNAMES = Collections.unmodifiableSet(s);
+ }
+
// get rid of proxies which probably contains wrong annotation metamodel
public static <T> Class<?> classFor(final Class<?> clazz) { // TODO: do we want a SPI with impl for guice, owb, openejb, ...?
if (isProxyClass(clazz)) {
@@ -31,7 +43,11 @@ public final class Proxies {
}
private static boolean isProxyClass(Class<?> clazz) {
- return clazz.getSimpleName().contains("$$");// a lot of proxies use this convention to avoid conflicts with inner/anonymous classes
+ final String simpleName = clazz.getSimpleName();
+ if (KNOWN_PROXY_CLASSNAMES.contains(simpleName)) {
+ return true;
+ }
+ return simpleName.contains("$$");// a lot of proxies use this convention to avoid conflicts with inner/anonymous classes
}
private Proxies() {