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);
             }

Reply via email to