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)