diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java index a7c7b2811..d75a39b18 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java @@ -154,15 +154,15 @@ public abstract class AbstractMatcher implements Serializable { Map map = new LinkedHashMap<>(); //this will set the group index references, like {1} - for (String key : orig.keySet()) { - map.put(key, convertParam(orig.get(key), vars)); + for (Map.Entry entry : orig.entrySet()) { + map.put(entry.getKey(), convertParam(entry.getValue(), vars)); } //the values map will contain entries like name->"Lex Luthor" and 1->"Lex Luthor" //now add the non-numeric values - for (String key: vars.keySet()) { - if (!NumberUtils.isNumber(key)) { - map.put(key, vars.get(key)); + for (Map.Entry entry: vars.entrySet()) { + if (!NumberUtils.isNumber(entry.getKey())) { + map.put(entry.getKey(), entry.getValue()); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java index ec498d41c..b94fff63a 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java @@ -59,8 +59,8 @@ public class ActionConfigMatcher extends AbstractMatcher implement Map configs, boolean looseMatch) { super(patternMatcher); - for (String name : configs.keySet()) { - addPattern(name, configs.get(name), looseMatch); + for (Map.Entry entry : configs.entrySet()) { + addPattern(entry.getKey(), entry.getValue(), looseMatch); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java index 9d5d430c4..c8f98b82e 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java @@ -419,8 +419,8 @@ public class DefaultConfiguration implements Configuration { this.namespaceActionConfigMatchers = new LinkedHashMap<>(); this.namespaceMatcher = new NamespaceMatcher(matcher, namespaceActionConfigs.keySet()); - for (String ns : namespaceActionConfigs.keySet()) { - namespaceActionConfigMatchers.put(ns, new ActionConfigMatcher(matcher, namespaceActionConfigs.get(ns), true)); + for (Map.Entry> entry : namespaceActionConfigs.entrySet()) { + namespaceActionConfigMatchers.put(entry.getKey(), new ActionConfigMatcher(matcher, entry.getValue(), true)); } } @@ -496,11 +496,11 @@ public class DefaultConfiguration implements Configuration { public String toString() { StringBuilder buff = new StringBuilder("RuntimeConfiguration - actions are\n"); - for (String namespace : namespaceActionConfigs.keySet()) { - Map actionConfigs = namespaceActionConfigs.get(namespace); + for (Map.Entry> entry : namespaceActionConfigs.entrySet()) { + Map actionConfigs = entry.getValue(); for (String s : actionConfigs.keySet()) { - buff.append(namespace).append("/").append(s).append("\n"); + buff.append(entry.getKey()).append("/").append(s).append("\n"); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java index e2584b19d..bf84cf366 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/InterceptorBuilder.java @@ -130,8 +130,8 @@ public class InterceptorBuilder { * interceptorStack1 -> [interceptor1.param1 -> someValue, interceptor1.param2 -> anotherValue] * */ - for (String key : refParams.keySet()) { - String value = refParams.get(key); + for (Map.Entry entry : refParams.entrySet()) { + String key = entry.getKey(); try { String name = key.substring(0, key.indexOf('.')); @@ -144,7 +144,7 @@ public class InterceptorBuilder { map = new LinkedHashMap<>(); } - map.put(key, value); + map.put(key, entry.getValue()); params.put(name, map); } catch (Exception e) { @@ -154,9 +154,9 @@ public class InterceptorBuilder { result = new ArrayList<>(stackConfig.getInterceptors()); - for (String key : params.keySet()) { - - Map map = params.get(key); + for (Map.Entry> entry : params.entrySet()) { + String key = entry.getKey(); + Map map = entry.getValue(); Object interceptorCfgObj = interceptorLocator.getInterceptorConfig(key); diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java index ee1f8f432..ac4b611b7 100644 --- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java +++ b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java @@ -412,8 +412,8 @@ public class XWorkConverter extends DefaultTypeConverter { Object converter = mapping.get(property); if (converter == null && LOG.isDebugEnabled()) { LOG.debug("Converter is null for property [{}]. Mapping size [{}]:", property, mapping.size()); - for (String next : mapping.keySet()) { - LOG.debug("{}:{}", next, mapping.get(next)); + for (Map.Entry entry : mapping.entrySet()) { + LOG.debug("{}:{}", entry.getKey(), entry.getValue()); } } return converter; diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java index 172b429a4..3f0414a31 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParameterFilterInterceptor.java @@ -118,11 +118,13 @@ public class ParameterFilterInterceptor extends AbstractInterceptor { for (String param : parameters.keySet()) { boolean currentAllowed = !isDefaultBlock(); - for (String currRule : includesExcludesMap.keySet()) { + for (Map.Entry entry : includesExcludesMap.entrySet()) { + String currRule = entry.getKey(); + if (param.startsWith(currRule) && (param.length() == currRule.length() || isPropertySeparator(param.charAt(currRule.length()))) ) { - currentAllowed = includesExcludesMap.get(currRule); + currentAllowed = entry.getValue(); } } if (!currentAllowed) { diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index 02615d855..6dc1c1953 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@ -172,10 +172,11 @@ public class ParametersInterceptor extends MethodFilterInterceptor { acceptableParameters = new TreeMap<>(); } - for (String name : params.keySet()) { - Parameter parameter = params.get(name); - if (isAcceptableParameter(name, action)) { - acceptableParameters.put(name, parameter); + for (Map.Entry entry : params.entrySet()) { + String parameterName = entry.getKey(); + + if (isAcceptableParameter(parameterName, action)) { + acceptableParameters.put(parameterName, entry.getValue()); } } @@ -270,10 +271,10 @@ public class ParametersInterceptor extends MethodFilterInterceptor { } StringBuilder logEntry = new StringBuilder(); - for (String name : parameters.keySet()) { - logEntry.append(String.valueOf(name)); + for (Map.Entry entry : parameters.entrySet()) { + logEntry.append(entry.getKey()); logEntry.append(" => "); - logEntry.append(parameters.get(name).getValue()); + logEntry.append(entry.getValue().getValue()); logEntry.append(" "); } diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java b/core/src/main/java/org/apache/struts2/components/UIBean.java index fe0f65c3c..1a0356a0c 100644 --- a/core/src/main/java/org/apache/struts2/components/UIBean.java +++ b/core/src/main/java/org/apache/struts2/components/UIBean.java @@ -1241,9 +1241,11 @@ public abstract class UIBean extends Component { } public void setDynamicAttributes(Map tagDynamicAttributes) { - for (String key : tagDynamicAttributes.keySet()) { + for (Map.Entry entry : tagDynamicAttributes.entrySet()) { + String key = entry.getKey(); + if (!isValidTagAttribute(key)) { - dynamicAttributes.put(key, tagDynamicAttributes.get(key)); + dynamicAttributes.put(key, entry.getValue()); } } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java index 69c08193e..2d016f56b 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java @@ -60,8 +60,8 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { */ public void cleanUp() { LOG.debug("Performing File Upload temporary storage cleanup."); - for (String fieldName : fileInfos.keySet()) { - for (FileInfo fileInfo : fileInfos.get(fieldName)) { + for (List fileInfoList : fileInfos.values()) { + for (FileInfo fileInfo : fileInfoList) { File file = fileInfo.getFile(); LOG.debug("Deleting file '{}'.", file.getName()); if (!file.delete()) { diff --git a/core/src/main/java/org/apache/struts2/result/PostbackResult.java b/core/src/main/java/org/apache/struts2/result/PostbackResult.java index 6ce109ca5..d040fbbb7 100644 --- a/core/src/main/java/org/apache/struts2/result/PostbackResult.java +++ b/core/src/main/java/org/apache/struts2/result/PostbackResult.java @@ -215,8 +215,9 @@ public class PostbackResult extends StrutsResultSupport { private void writeFormElements(HttpServletRequest request, PrintWriter pw) throws UnsupportedEncodingException { Map params = request.getParameterMap(); - for (String name : params.keySet()) { - String[] values = params.get(name); + for (Map.Entry entry : params.entrySet()) { + String name = entry.getKey(); + String[] values = entry.getValue(); if (isElementIncluded(name, values)) { writeFormElement(pw, name, values); } diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java index f6800d9e2..a70dde64e 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java @@ -524,8 +524,8 @@ public class FreemarkerManager { ScopesHashModel model = buildScopesHashModel(servletContext, request, response, wrapper, stack); populateContext(model, stack, action, request, response); if (tagLibraries != null) { - for (String prefix : tagLibraries.keySet()) { - model.put(prefix, tagLibraries.get(prefix).getModels(stack, request, response)); + for (Map.Entry entry : tagLibraries.entrySet()) { + model.put(entry.getKey(), entry.getValue().getModels(stack, request, response)); } } diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java index 31f088d38..a4e7eceb8 100644 --- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java +++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java @@ -681,8 +681,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder { && actionAnnotation == null && actionsAnnotation == null && (alwaysMapExecute || map.isEmpty())) { boolean found = false; - for (String method : map.keySet()) { - List actions = map.get(method); + for (List actions : map.values()) { for (Action action : actions) { // Check if there are duplicate action names in the annotations. @@ -709,8 +708,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder { } // Build the actions for the annotations - for (String method : map.keySet()) { - List actions = map.get(method); + for (Map.Entry> entry : map.entrySet()) { + String method = entry.getKey(); + List actions = entry.getValue(); for (Action action : actions) { PackageConfig.Builder pkgCfg = defaultPackageConfig; if (action.value().contains("/") && !slashesInActionNames) { diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/XHTMLTagSerializer.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/XHTMLTagSerializer.java index 730071c2c..ab7203687 100644 --- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/XHTMLTagSerializer.java +++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/XHTMLTagSerializer.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringEscapeUtils; import java.io.IOException; import java.io.Writer; +import java.util.Map; /** * Write tags as XHTML @@ -53,11 +54,11 @@ public class XHTMLTagSerializer implements TagSerializer { writer.write("<"); writer.write(name); if (attrs != null) { - for (String key : attrs.keySet()) { + for (Map.Entry entry : attrs.entrySet()) { writer.write(" "); - writer.write(key); + writer.write(entry.getKey()); writer.write("=\""); - writer.write(attrs.get(key)); + writer.write(entry.getValue()); writer.write("\""); } } diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java index ce847c230..35daab0df 100644 --- a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java +++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java @@ -101,8 +101,7 @@ public abstract class JSONCleaner { boolean allow = !isDefaultBlock(); if (includesExcludesMap != null) { - for (String currRule : includesExcludesMap.keySet()) { - Filter f = includesExcludesMap.get(currRule); + for (Filter f : includesExcludesMap.values()) { if (f.pattern.matcher(ognl).matches()) { allow = f.allow; } diff --git a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java index b095da5ab..a29374658 100644 --- a/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java +++ b/plugins/osgi/src/main/java/org/apache/struts2/osgi/host/BaseOsgiHost.java @@ -108,12 +108,13 @@ public abstract class BaseOsgiHost implements OsgiHost { configProps.put(AutoProcessor.AUTO_START_PROP + ".2", StringUtils.join(bundles, " ")); } } else { - for (String runLevel : runLevels.keySet()) { - if ("1".endsWith(runLevel)) { + for (Map.Entry runLevel : runLevels.entrySet()) { + String runLevelKey = runLevel.getKey(); + if ("1".endsWith(runLevelKey)) { throw new StrutsException("Run level dirs must be greater than 1. Run level 1 is reserved for the Felix bundles"); } - List bundles = getBundlesInDir(runLevels.get(runLevel)); - configProps.put(AutoProcessor.AUTO_START_PROP + "." + runLevel, StringUtils.join(bundles, " ")); + List bundles = getBundlesInDir(runLevel.getValue()); + configProps.put(AutoProcessor.AUTO_START_PROP + "." + runLevelKey, StringUtils.join(bundles, " ")); } } } @@ -319,4 +320,4 @@ public abstract class BaseOsgiHost implements OsgiHost { } } -} \ No newline at end of file +} diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java index 286bff23c..52447edf3 100644 --- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java +++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java @@ -278,8 +278,9 @@ public class PortletUrlHelper { Map result = null; if (params != null) { result = new LinkedHashMap(params.size()); - for ( String key : params.keySet() ) { - Object val = params.get(key); + for (Map.Entry entry : params.entrySet() ) { + String key = entry.getKey(); + Object val = entry.getValue(); if (val instanceof String[]) { result.put(key, (String[]) val); } else { diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java index 63c0fdc7a..7af6069bb 100644 --- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java +++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletApplicationContext.java @@ -118,10 +118,9 @@ public class StrutsWildcardServletApplicationContext extends ServletApplicationC Pattern pattern = WildcardUtil.compileWildcardPattern(path); Map matches = finder.getResourcesMap(""); - for (String resource : matches.keySet()) { - if (pattern.matcher(resource).matches()) { - URL url = matches.get(resource); - resources.add(new StrutsApplicationResource(url)); + for (Map.Entry entry : matches.entrySet()) { + if (pattern.matcher(entry.getKey()).matches()) { + resources.add(new StrutsApplicationResource(entry.getValue())); } }