From c5acc25dec1d46e3102bc2fbce7b059cbfe82e70 Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 15 Oct 2023 08:41:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E8=BF=87=E6=BB=A4=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E6=AD=A3=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/boot/ClassFilter.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/redkale/boot/ClassFilter.java b/src/main/java/org/redkale/boot/ClassFilter.java index 2219804d2..cad5379e3 100644 --- a/src/main/java/org/redkale/boot/ClassFilter.java +++ b/src/main/java/org/redkale/boot/ClassFilter.java @@ -76,6 +76,10 @@ public final class ClassFilter { this.classLoader = classLoader == null ? Thread.currentThread().getContextClassLoader() : classLoader; } + public static ClassFilter create(String includeRegxs, String excludeRegxs) { + return create(null, null, includeRegxs, excludeRegxs, null, null); + } + public static ClassFilter create(RedkaleClassLoader classLoader, Class[] excludeSuperClasses, String includeRegxs, String excludeRegxs, Set includeValues, Set excludeValues) { ClassFilter filter = new ClassFilter(classLoader, null, null, excludeSuperClasses); filter.setIncludePatterns(includeRegxs == null ? null : includeRegxs.split(";")); @@ -309,6 +313,7 @@ public final class ClassFilter { return true; } } + return false; } return includePatterns == null; } @@ -341,17 +346,17 @@ public final class ClassFilter { return rs; } - public static Pattern[] toPattern(String[] regs) { - if (regs == null || regs.length == 0) { + public static Pattern[] toPattern(String[] regxs) { + if (regxs == null || regxs.length == 0) { return null; } int i = 0; - Pattern[] rs = new Pattern[regs.length]; - for (String reg : regs) { - if (reg == null || reg.trim().isEmpty()) { + Pattern[] rs = new Pattern[regxs.length]; + for (String regx : regxs) { + if (regx == null || regx.trim().isEmpty()) { continue; } - rs[i++] = Pattern.compile(reg.trim()); + rs[i++] = Pattern.compile(format(regx.trim())); } if (i == 0) { return null; @@ -364,6 +369,20 @@ public final class ClassFilter { return ps; } + //将简化版正则转成标准的正则表达式 + // *.platf.* 转成 ^.*\.platf\..*$ + // .platf. 转成 ^.*\.platf\..*$ + private static String format(String regx) { + String str = regx.replace('.', (char) 8); + if (regx.endsWith("*") || regx.endsWith(".")) { + str = str.substring(0, str.length() - 1) + ".*$"; + } + if (regx.startsWith("*") || regx.startsWith(".")) { + str = "^.*" + str.substring(1); + } + return str.replace(new String(new char[]{8}), "\\."); + } + public void setSuperClass(Class superClass) { this.superClass = superClass; }