增加formatPackageRegx
This commit is contained in:
@@ -33,6 +33,10 @@ public final class ClassFilter<T> {
|
|||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(ClassFilter.class.getName()); // 日志对象
|
private static final Logger logger = Logger.getLogger(ClassFilter.class.getName()); // 日志对象
|
||||||
|
|
||||||
|
private static final String dian = new String(new char[] {7}); // .
|
||||||
|
private static final String dxing = new String(new char[] {8}); // *
|
||||||
|
private static final String sxing = new String(new char[] {9}); // **
|
||||||
|
|
||||||
private final Set<FilterEntry<T>> entrys = new HashSet<>(); // 符合条件的结果
|
private final Set<FilterEntry<T>> entrys = new HashSet<>(); // 符合条件的结果
|
||||||
|
|
||||||
private final Set<FilterEntry<T>> expectEntrys = new HashSet<>(); // 准备符合条件的结果
|
private final Set<FilterEntry<T>> expectEntrys = new HashSet<>(); // 准备符合条件的结果
|
||||||
@@ -389,7 +393,7 @@ public final class ClassFilter<T> {
|
|||||||
if (regx == null || regx.trim().isEmpty()) {
|
if (regx == null || regx.trim().isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
rs[i++] = Pattern.compile(format(regx.trim()));
|
rs[i++] = Pattern.compile(formatPackageRegx(regx.trim()));
|
||||||
}
|
}
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
return null;
|
return null;
|
||||||
@@ -402,18 +406,20 @@ public final class ClassFilter<T> {
|
|||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将简化版正则转成标准的正则表达式
|
/**
|
||||||
// *.platf.* 转成 ^.*\.platf\..*$
|
* 将简化版正则转成标准的正则表达式 <br>
|
||||||
// .platf. 转成 ^.*\.platf\..*$
|
* *.platf.** 转成 ^(\w+)\.platf\.(.*)$
|
||||||
private static String format(String regx) {
|
*
|
||||||
String str = regx.replace('.', (char) 8);
|
* @param regx
|
||||||
if (regx.endsWith("*") || regx.endsWith(".")) {
|
* @return Pattern
|
||||||
str = str.substring(0, str.length() - 1) + ".*$";
|
*/
|
||||||
|
public static String formatPackageRegx(String regx) {
|
||||||
|
if (regx.indexOf('^') >= 0 || regx.indexOf('$') >= 0 || regx.indexOf('\\') >= 0) { // 已经是标准正则表达式
|
||||||
|
return regx;
|
||||||
}
|
}
|
||||||
if (regx.startsWith("*") || regx.startsWith(".")) {
|
String str = regx.replace("**", sxing).replace("*", dxing);
|
||||||
str = "^.*" + str.substring(1);
|
str = str.replace("\\.", dian).replace(".", dian);
|
||||||
}
|
return "^" + str.replace(dian, "\\.").replace(dxing, "(\\w+)").replace(sxing, "(.*)") + "$";
|
||||||
return str.replace(new String(new char[] {8}), "\\.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSuperClass(Class superClass) {
|
public void setSuperClass(Class superClass) {
|
||||||
|
|||||||
40
src/test/java/org/redkale/test/util/ClassFilterTest.java
Normal file
40
src/test/java/org/redkale/test/util/ClassFilterTest.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.redkale.test.util;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.*;
|
||||||
|
import org.redkale.boot.ClassFilter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
public class ClassFilterTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Throwable {
|
||||||
|
ClassFilterTest test = new ClassFilterTest();
|
||||||
|
test.run1();
|
||||||
|
test.run2();
|
||||||
|
test.run3();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void run1() {
|
||||||
|
String regx = ClassFilter.formatPackageRegx("*.platf.**");
|
||||||
|
Assertions.assertEquals("^(\\w+)\\.platf\\.(.*)$", regx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void run2() {
|
||||||
|
String regx = ClassFilter.formatPackageRegx("com.platf.**.api");
|
||||||
|
Assertions.assertEquals("^com\\.platf\\.(.*)\\.api$", regx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void run3() {
|
||||||
|
String regx = ClassFilter.formatPackageRegx("**.platf.api");
|
||||||
|
Assertions.assertEquals("^(.*)\\.platf\\.api$", regx);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user