38 lines
1.2 KiB
Java
38 lines
1.2 KiB
Java
package com.novitechie.rules;
|
|
|
|
import com.janetfilter.core.commons.DebugInfo;
|
|
import com.janetfilter.core.models.FilterRule;
|
|
import com.novitechie.LogUtil;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class LoadClassRule {
|
|
|
|
private static List<FilterRule> hidePackageRules = Collections.emptyList();
|
|
|
|
private static List<FilterRule> ignoreClassRules = Collections.emptyList();
|
|
|
|
public static void initRules(List<FilterRule> hidePackageRules, List<FilterRule> ignoreClassRules) {
|
|
LoadClassRule.hidePackageRules = hidePackageRules;
|
|
LoadClassRule.ignoreClassRules = ignoreClassRules;
|
|
}
|
|
|
|
public static void check(String name) throws Exception {
|
|
if (!checkIgnoreClass(name) && checkHidePackage(name)) {
|
|
DebugInfo.output("======================LoadClass: " + name);
|
|
LogUtil.printStackTrace();
|
|
throw new ClassNotFoundException(name);
|
|
}
|
|
}
|
|
|
|
private static boolean checkHidePackage(String name) {
|
|
return hidePackageRules.stream().anyMatch(rule -> rule.test(name));
|
|
}
|
|
|
|
private static boolean checkIgnoreClass(String name) {
|
|
return ignoreClassRules.stream().anyMatch(rule -> rule.test(name));
|
|
}
|
|
|
|
}
|