This is an automated email from the ASF dual-hosted git repository. kusal pushed a commit to branch WW-5341-classloaders in repository https://gitbox.apache.org/repos/asf/struts.git
commit 699786e190ee0d12e72d43615d4ad2d9ada5bb76 Author: Kusal Kithul-Godage <g...@kusal.io> AuthorDate: Mon Aug 28 13:43:18 2023 +1000 WW-5341 Refactor SecurityMemberAccess methods for reuse --- .../xwork2/ognl/SecurityMemberAccess.java | 26 +++++++++------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 5db52639e..fada135c2 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -220,34 +220,32 @@ public class SecurityMemberAccess implements MemberAccess { "Parameters should never be null - if member is static, targetClass should be the same as memberClass."); } - Set<Class<?>> classesToCheck = new HashSet<>(); - classesToCheck.add(targetClass); - classesToCheck.add(memberClass); - + List<Class<?>> classesToCheck = Arrays.asList(targetClass, memberClass); for (Class<?> clazz : classesToCheck) { - if (!isExcludedPackageExempt(clazz) && (isExcludedPackageNamePatterns(clazz) || isExcludedPackageNames(clazz))) { + if (!excludedPackageExemptClasses.contains(clazz) && (isExcludedPackageNames(clazz) || isExcludedPackageNamePatterns(clazz))) { return true; } } return false; } - protected String toPackageName(Class<?> clazz) { + public static String toPackageName(Class<?> clazz) { if (clazz.getPackage() == null) { return ""; - } else { - return clazz.getPackage().getName(); } + return clazz.getPackage().getName(); } protected boolean isExcludedPackageNamePatterns(Class<?> clazz) { - String packageName = toPackageName(clazz); - return excludedPackageNamePatterns.stream().anyMatch(pattern -> pattern.matcher(packageName).matches()); + return excludedPackageNamePatterns.stream().anyMatch(pattern -> pattern.matcher(toPackageName(clazz)).matches()); } protected boolean isExcludedPackageNames(Class<?> clazz) { - String packageName = toPackageName(clazz); - List<String> packageParts = Arrays.asList(packageName.split("\\.")); + return isExcludedPackageNamesStatic(clazz, excludedPackageNames); + } + + public static boolean isExcludedPackageNamesStatic(Class<?> clazz, Set<String> excludedPackageNames) { + List<String> packageParts = Arrays.asList(toPackageName(clazz).split("\\.")); for (int i = 0; i < packageParts.size(); i++) { String parentPackage = String.join(".", packageParts.subList(0, i + 1)); if (excludedPackageNames.contains(parentPackage)) { @@ -261,10 +259,6 @@ public class SecurityMemberAccess implements MemberAccess { return excludedClasses.contains(clazz); } - protected boolean isExcludedPackageExempt(Class<?> clazz) { - return excludedPackageExemptClasses.contains(clazz); - } - protected boolean isAcceptableProperty(String name) { return name == null || ((!isExcluded(name)) && isAccepted(name)); }