Adds support for multiple tiles defintions

This commit is contained in:
Lukasz Lenart
2016-04-05 08:44:04 +02:00
parent cfad2f1d35
commit c12cd61946
@@ -19,6 +19,7 @@
package org.apache.struts2.tiles; package org.apache.struts2.tiles;
import com.opensymphony.xwork2.util.TextParseUtil;
import ognl.OgnlException; import ognl.OgnlException;
import ognl.OgnlRuntime; import ognl.OgnlRuntime;
import ognl.PropertyAccessor; import ognl.PropertyAccessor;
@@ -71,6 +72,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Dedicated Struts factory to build Tiles container with support for: * Dedicated Struts factory to build Tiles container with support for:
@@ -176,25 +178,28 @@ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory {
@Override @Override
protected List<ApplicationResource> getSources(ApplicationContext applicationContext) { protected List<ApplicationResource> getSources(ApplicationContext applicationContext) {
Collection<ApplicationResource> resources = applicationContext.getResources(getTilesDefinitionPattern(applicationContext.getInitParams())); Collection<ApplicationResource> resources = new ArrayList<>();
Set<String> definitions = getTilesDefinitions(applicationContext.getInitParams());
for (String definition : definitions) {
resources.addAll(applicationContext.getResources(definition));
}
List<ApplicationResource> filteredResources = new ArrayList<>(); List<ApplicationResource> filteredResources = new ArrayList<>();
if (resources != null) { for (ApplicationResource resource : resources) {
for (ApplicationResource resource : resources) { if (Locale.ROOT.equals(resource.getLocale())) {
if (Locale.ROOT.equals(resource.getLocale())) { filteredResources.add(resource);
filteredResources.add(resource);
}
} }
} }
return filteredResources; return filteredResources;
} }
protected String getTilesDefinitionPattern(Map<String, String> params) { protected Set<String> getTilesDefinitions(Map<String, String> params) {
if (params.containsKey(DefinitionsFactory.DEFINITIONS_CONFIG)) { if (params.containsKey(DefinitionsFactory.DEFINITIONS_CONFIG)) {
return params.get(DefinitionsFactory.DEFINITIONS_CONFIG); return TextParseUtil.commaDelimitedStringToSet(params.get(DefinitionsFactory.DEFINITIONS_CONFIG));
} }
return TILES_DEFAULT_PATTERN; return TextParseUtil.commaDelimitedStringToSet(TILES_DEFAULT_PATTERN);
} }
protected ELAttributeEvaluator createELEvaluator(ApplicationContext applicationContext) { protected ELAttributeEvaluator createELEvaluator(ApplicationContext applicationContext) {