Repository: struts Updated Branches: refs/heads/master e53a3406e -> b6a7a0e38 refs/heads/support-2-3 17dab897d -> 5ce807aae
WW-4622 - Adds fallback to static config definitions to allow work in restricted envs (cherry picked from 6770b35), getRealPath NPE check; WW-4623, WW-4624 - Adds support for multiple tiles defintions (cherry picked from c12cd61) Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5ce807aa Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5ce807aa Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5ce807aa Branch: refs/heads/support-2-3 Commit: 5ce807aaea3b3efc1c8de2c064b43052b0b8c73b Parents: 17dab89 Author: Aleksandr Mashchenko <amashche...@apache.org> Authored: Wed Apr 6 19:36:13 2016 +0300 Committer: Aleksandr Mashchenko <amashche...@apache.org> Committed: Wed Apr 6 19:36:13 2016 +0300 ---------------------------------------------------------------------- .../struts2/tiles/StrutsTilesContainerFactory.java | 16 ++++++++++++---- .../struts2/tiles/StrutsTilesInitializer.java | 13 +++++++++++-- ...trutsWildcardServletTilesApplicationContext.java | 8 ++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/5ce807aa/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java ---------------------------------------------------------------------- diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java index b96884c..871ccf3 100644 --- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java +++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesContainerFactory.java @@ -63,6 +63,8 @@ import org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer; import org.apache.tiles.servlet.context.ServletUtil; import org.apache.tiles.util.URLUtil; +import com.opensymphony.xwork2.util.TextParseUtil; + import javax.el.ArrayELResolver; import javax.el.BeanELResolver; import javax.el.CompositeELResolver; @@ -73,6 +75,7 @@ import javax.el.ResourceBundleELResolver; import javax.servlet.ServletContext; import java.io.IOException; import java.net.URL; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -201,7 +204,12 @@ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory { @Override protected List<URL> getSourceURLs(TilesApplicationContext applicationContext, TilesRequestContextFactory contextFactory) { try { - Set<URL> finalSet = applicationContext.getResources(getTilesDefinitionPattern(applicationContext.getInitParams())); + Set<URL> finalSet = new HashSet<URL>(); + + Set<String> definitions = getTilesDefinitions(applicationContext.getInitParams()); + for (String definition : definitions) { + finalSet.addAll(applicationContext.getResources(definition)); + } return URLUtil.getBaseTilesDefinitionURLs(finalSet); } catch (IOException e) { @@ -209,11 +217,11 @@ public class StrutsTilesContainerFactory extends BasicTilesContainerFactory { } } - protected String getTilesDefinitionPattern(Map<String, String> params) { + protected Set<String> getTilesDefinitions(Map<String, String> params) { 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(TilesApplicationContext applicationContext) { http://git-wip-us.apache.org/repos/asf/struts/blob/5ce807aa/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesInitializer.java ---------------------------------------------------------------------- diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesInitializer.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesInitializer.java index 550c6b1..c667104 100644 --- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesInitializer.java +++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesInitializer.java @@ -22,7 +22,9 @@ package org.apache.struts2.tiles; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.tiles.TilesApplicationContext; +import org.apache.tiles.definition.DefinitionsFactory; import org.apache.tiles.factory.AbstractTilesContainerFactory; +import org.apache.tiles.servlet.context.ServletTilesApplicationContext; import org.apache.tiles.startup.AbstractTilesInitializer; import javax.servlet.ServletContext; @@ -33,8 +35,15 @@ public class StrutsTilesInitializer extends AbstractTilesInitializer { @Override protected TilesApplicationContext createTilesApplicationContext(TilesApplicationContext preliminaryContext) { - LOG.debug("Initializing Tiles wildcard support ..."); - return new StrutsWildcardServletTilesApplicationContext((ServletContext) preliminaryContext.getContext()); + ServletContext servletContext = (ServletContext) preliminaryContext.getContext(); + + if (servletContext.getInitParameter(DefinitionsFactory.DEFINITIONS_CONFIG) != null) { + LOG.trace("Found definitions config in web.xml, using standard Servlet support ...."); + return new ServletTilesApplicationContext(servletContext); + } else { + LOG.trace("Initializing Tiles wildcard support ..."); + return new StrutsWildcardServletTilesApplicationContext(servletContext); + } } @Override http://git-wip-us.apache.org/repos/asf/struts/blob/5ce807aa/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletTilesApplicationContext.java ---------------------------------------------------------------------- diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletTilesApplicationContext.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletTilesApplicationContext.java index f01b45a..d2dca70 100644 --- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletTilesApplicationContext.java +++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsWildcardServletTilesApplicationContext.java @@ -50,8 +50,12 @@ public class StrutsWildcardServletTilesApplicationContext extends ServletTilesAp for (Object path : context.getResourcePaths("/")) { try { - URL url = new File(context.getRealPath(String.valueOf(path))).toURI().toURL(); - urls.add(url); + String realPath = context.getRealPath(String.valueOf(path)); + + if (realPath != null) { + URL url = new File(realPath).toURI().toURL(); + urls.add(url); + } } catch (MalformedURLException e) { throw new ConfigurationException(e); }