From 620fa0430cc00e89052cf1f952aaedb64b1e094c Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 23 Aug 2018 19:54:47 +0800 Subject: [PATCH] =?UTF-8?q?ClassFilter=E8=BE=93=E5=87=BA=E6=9B=B4=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/boot/ClassFilter.java | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/org/redkale/boot/ClassFilter.java b/src/org/redkale/boot/ClassFilter.java index 7ef0ef5d5..02c5146b5 100644 --- a/src/org/redkale/boot/ClassFilter.java +++ b/src/org/redkale/boot/ClassFilter.java @@ -136,10 +136,11 @@ public final class ClassFilter { * * @param property AnyValue * @param clazzname String + * @param url URL */ @SuppressWarnings("unchecked") - public final void filter(AnyValue property, String clazzname) { - filter(property, clazzname, true); + public final void filter(AnyValue property, String clazzname, URL url) { + filter(property, clazzname, true, url); } /** @@ -150,6 +151,18 @@ public final class ClassFilter { * @param autoscan 为true表示自动扫描的, false表示显著调用filter, AutoLoad的注解将被忽略 */ public final void filter(AnyValue property, String clazzname, boolean autoscan) { + filter(property, clazzname, autoscan, null); + } + + /** + * 过滤指定的class + * + * @param property application.xml中对应class节点下的property属性项 + * @param clazzname class名称 + * @param autoscan 为true表示自动扫描的, false表示显著调用filter, AutoLoad的注解将被忽略 + * @param url URL + */ + public final void filter(AnyValue property, String clazzname, boolean autoscan, URL url) { boolean r = accept0(property, clazzname); ClassFilter cf = r ? this : null; if (r && ands != null) { @@ -192,7 +205,7 @@ public final class ClassFilter { if (finest && !clazzname.startsWith("sun.") && !clazzname.startsWith("javax.") && !clazzname.startsWith("com.sun.") && !clazzname.startsWith("jdk.") && !clazzname.startsWith("META-INF") && (!(cfe instanceof NoClassDefFoundError) || ((NoClassDefFoundError) cfe).getMessage().startsWith("java.lang.NoClassDefFoundError: java"))) { - logger.log(Level.FINEST, ClassFilter.class.getSimpleName() + " filter error for class: " + clazzname, cfe); + logger.log(Level.FINEST, ClassFilter.class.getSimpleName() + " filter error for class: " + clazzname + (url == null ? "" : (" in " + url)), cfe); } } } @@ -504,7 +517,7 @@ public final class ClassFilter { classes.add(classname); if (debug) debugstr.append(classname).append("\r\n"); for (final ClassFilter filter : filters) { - if (filter != null) filter.filter(null, classname); + if (filter != null) filter.filter(null, classname, url); } } } @@ -513,7 +526,7 @@ public final class ClassFilter { } else { for (String classname : classes) { for (final ClassFilter filter : filters) { - if (filter != null) filter.filter(null, classname); + if (filter != null) filter.filter(null, classname, url); } } } @@ -532,14 +545,14 @@ public final class ClassFilter { classes.add(classname); if (debug) debugstr.append(classname).append("\r\n"); for (final ClassFilter filter : filters) { - if (filter != null) filter.filter(null, classname); + if (filter != null) filter.filter(null, classname, url); } } cache.put(url, classes); } else { for (String classname : classes) { for (final ClassFilter filter : filters) { - if (filter != null) filter.filter(null, classname); + if (filter != null) filter.filter(null, classname, url); } } }