Author: markt
Date: Wed Sep 17 04:11:42 2008
New Revision: 696240

URL: http://svn.apache.org/viewvc?rev=696240&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45441
Filters for INCLUDE/FORWARD need to be matched against servletPath+pathinfo

Modified:
    tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java?rev=696240&r1=696239&r2=696240&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Wed 
Sep 17 04:11:42 2008
@@ -429,7 +429,7 @@
             if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
                 state.outerRequest.setAttribute
                     (ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
-                     servletPath);
+                     getCombinedPath());
                 state.outerRequest.setAttribute
                     (ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
                      Integer.valueOf(ApplicationFilterFactory.FORWARD));
@@ -442,7 +442,23 @@
     }
     
     
-    
+    /**
+     * Combine the servletPath and the pathInfo. If pathInfo is
+     * <code>null</code> it is ignored. If servletPath is <code>null</code> 
then
+     * <code>null</code> is returned.
+     * @return The combined path with pathInfo appended to servletInfo
+     */
+    private String getCombinedPath() {
+        if (servletPath == null) {
+            return null;
+        }
+        if (pathInfo == null) {
+            return servletPath;
+        }
+        return servletPath + pathInfo;
+    }
+
+
     /**
      * Include the response from another resource in the current response.
      * Any runtime exception, IOException, or ServletException thrown by the
@@ -499,7 +515,7 @@
                     Integer.valueOf(ApplicationFilterFactory.INCLUDE));
             wrequest.setAttribute(
                     ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
-                    servletPath);
+                    getCombinedPath());
             invoke(state.outerRequest, state.outerResponse, state);
         }
 
@@ -531,7 +547,7 @@
                     Integer.valueOf(ApplicationFilterFactory.INCLUDE));
             wrequest.setAttribute(
                     ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
-                    servletPath);
+                    getCombinedPath());
             invoke(state.outerRequest, state.outerResponse, state);
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to