Adds double check if resource exists

Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/8e67b914
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/8e67b914
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/8e67b914

Branch: refs/heads/support-2-3
Commit: 8e67b9144aa643769b261e2492cb561e04d016ab
Parents: 77017cd
Author: Lukasz Lenart <lukaszlen...@apache.org>
Authored: Wed Aug 17 15:35:11 2016 +0200
Committer: Lukasz Lenart <lukaszlen...@apache.org>
Committed: Wed Aug 17 15:36:20 2016 +0200

----------------------------------------------------------------------
 .../convention/ConventionUnknownHandler.java    | 28 +++++++++++++-------
 1 file changed, 18 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/8e67b914/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
----------------------------------------------------------------------
diff --git 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
index ed70858..2be1cec 100644
--- 
a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
+++ 
b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
@@ -43,6 +43,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory;
 
 import javax.servlet.ServletContext;
 import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -332,27 +333,34 @@ public class ConventionUnknownHandler implements 
UnknownHandler {
                                 Map<String, ResultTypeConfig> 
resultsByExtension) {
         try {
             boolean traceEnabled = LOG.isTraceEnabled();
-            if (traceEnabled)
+            if (traceEnabled) {
                 LOG.trace("Checking ServletContext for [#0]", path);
+            }
 
-            if (servletContext.getResource(path) != null) {
-                if (traceEnabled)
-                    LOG.trace("Found");
+            URL resource = servletContext.getResource(path);
+            if (resource != null && resource.getPath().endsWith(path)) {
+                if (traceEnabled) {
+                    LOG.trace("Found resource #0", resource);
+                }
                 return buildResult(path, resultCode, 
resultsByExtension.get(ext), actionContext);
             }
 
-            if (traceEnabled)
-                LOG.trace("Checking ClasLoader for #0", path);
+            if (traceEnabled) {
+                LOG.trace("Checking ClassLoader for #0", path);
+            }
 
             String classLoaderPath = path.startsWith("/") ? path.substring(1, 
path.length()) : path;
-            if (ClassLoaderUtil.getResource(classLoaderPath, getClass()) != 
null) {
-                if (traceEnabled)
-                    LOG.trace("Found");
+            resource = ClassLoaderUtil.getResource(classLoaderPath, 
getClass());
+            if (resource != null && 
resource.getPath().endsWith(classLoaderPath)) {
+                if (traceEnabled) {
+                    LOG.trace("Found resource #0", resource);
+                }
                 return buildResult(path, resultCode, 
resultsByExtension.get(ext), actionContext);
             }
         } catch (MalformedURLException e) {
-            if (LOG.isErrorEnabled())
+            if (LOG.isErrorEnabled()) {
                 LOG.error("Unable to parse template path: [#0] skipping...", 
path);
+            }
         }
 
         return null;

Reply via email to