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));
     }

Reply via email to