This is an automated email from the ASF dual-hosted git repository.

kusal pushed a commit to branch WW-5337-exclusion-performance
in repository https://gitbox.apache.org/repos/asf/struts.git
commit bb68ce6ae5a3cff8f35844f4533c4007370c30e8
Author: Kusal Kithul-Godage <g...@kusal.io>
AuthorDate: Mon Aug 21 23:31:31 2023 +1000

    WW-5337 Catch PatternSyntaxException and ensure ConfigurationException 
thrown
---
 .../main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java 
b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
index c6169afa9..be738be93 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
@@ -51,6 +51,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import static 
com.opensymphony.xwork2.util.TextParseUtil.commaDelimitedStringToSet;
 
 
 /**
@@ -218,14 +221,13 @@ public class OgnlUtil {
     }
 
     private Set<Pattern> parseExcludedPackageNamePatterns(String 
commaDelimitedPackagePatterns) {
-        Set<String> packagePatterns = 
TextParseUtil.commaDelimitedStringToSet(commaDelimitedPackagePatterns);
-        Set<Pattern> packageNamePatterns = new HashSet<>();
-
-        for (String pattern : packagePatterns) {
-            packageNamePatterns.add(Pattern.compile(pattern));
+        try {
+            return commaDelimitedStringToSet(commaDelimitedPackagePatterns)
+                    .stream().map(Pattern::compile).collect(toSet());
+        } catch (PatternSyntaxException e) {
+            throw new ConfigurationException(
+                    "Excluded package name patterns could not be parsed due to 
invalid regex: " + commaDelimitedPackagePatterns, e);
         }
-
-        return packageNamePatterns;
     }
 
     @Inject(value = StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAMES, required = 
false)

Reply via email to