This is an automated email from the ASF dual-hosted git repository. kusal pushed a commit to branch WW-5406-injection-order in repository https://gitbox.apache.org/repos/asf/struts.git
commit ad49ea866a097396135fb347543ec581bcad4389 Author: Kusal Kithul-Godage <g...@kusal.io> AuthorDate: Thu Apr 18 22:28:30 2024 +1000 WW-5406 Fix injection order issue for excluded patterns --- .../org/apache/struts2/dispatcher/Dispatcher.java | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index af5bb5402..a1f9094d1 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -167,8 +167,9 @@ public class Dispatcher { */ private Pattern multipartValidationPattern = Pattern.compile(MULTIPART_FORM_DATA_REGEX); + private String actionExcludedPatternsStr; private String actionExcludedPatternsSeparator = ","; - private List<Pattern> actionExcludedPatterns = emptyList(); + private List<Pattern> actionExcludedPatterns; /** * Provide list of default configuration files. @@ -355,18 +356,24 @@ public class Dispatcher { @Inject(value = StrutsConstants.STRUTS_ACTION_EXCLUDE_PATTERN, required = false) public void setActionExcludedPatterns(String excludedPatterns) { - this.actionExcludedPatterns = buildExcludedPatternsList(excludedPatterns, actionExcludedPatternsSeparator); + this.actionExcludedPatternsStr = excludedPatterns; } - private static List<Pattern> buildExcludedPatternsList(String patterns, String separator) { - if (patterns == null || patterns.trim().isEmpty()) { - return emptyList(); + public List<Pattern> getActionExcludedPatterns() { + if (actionExcludedPatterns == null) { + initActionExcludedPatterns(); } - return unmodifiableList(Arrays.stream(patterns.split(separator)).map(String::trim).map(Pattern::compile).collect(toList())); + return actionExcludedPatterns; } - public List<Pattern> getActionExcludedPatterns() { - return actionExcludedPatterns; + private void initActionExcludedPatterns() { + if (actionExcludedPatternsStr == null || actionExcludedPatternsStr.trim().isEmpty()) { + actionExcludedPatterns = emptyList(); + return; + } + actionExcludedPatterns = unmodifiableList( + Arrays.stream(actionExcludedPatternsStr.split(actionExcludedPatternsSeparator)) + .map(String::trim).map(Pattern::compile).collect(toList())); } @Inject