You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/11/11 15:26:21 UTC

[tomcat] branch 8.5.x updated: Use servlet4preview package to access mapping info

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
     new b0ca786  Use servlet4preview package to access mapping info
b0ca786 is described below

commit b0ca786f1aa197dad413839ae69d05183fe413d0
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Nov 11 15:26:00 2019 +0000

    Use servlet4preview package to access mapping info
---
 .../org/apache/catalina/filters/ExpiresFilter.java | 36 ++++++++++++++--------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/java/org/apache/catalina/filters/ExpiresFilter.java b/java/org/apache/catalina/filters/ExpiresFilter.java
index 85d5fce..740944a 100644
--- a/java/org/apache/catalina/filters/ExpiresFilter.java
+++ b/java/org/apache/catalina/filters/ExpiresFilter.java
@@ -35,13 +35,14 @@ import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestWrapper;
 import javax.servlet.ServletResponse;
 import javax.servlet.WriteListener;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.http.MappingMatch;
 
+import org.apache.catalina.servlet4preview.http.MappingMatch;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -1285,17 +1286,28 @@ public class ExpiresFilter extends FilterBase {
      */
     protected Date getExpirationDate(HttpServletRequest request, XHttpServletResponse response) {
         String contentType = response.getContentType();
-        if (contentType == null && request != null &&
-                request.getHttpServletMapping().getMappingMatch() == MappingMatch.DEFAULT &&
-                response.getStatus() == HttpServletResponse.SC_NOT_MODIFIED) {
-            // Default servlet normally sets the content type but does not for
-            // 304 responses. Look it up.
-            String servletPath = request.getServletPath();
-            if (servletPath != null) {
-                int lastSlash = servletPath.lastIndexOf('/');
-                if (lastSlash > -1) {
-                    String fileName = servletPath.substring(lastSlash + 1);
-                    contentType = request.getServletContext().getMimeType(fileName);
+        if (contentType == null && request != null) {
+            ServletRequest innerRequest = request;
+            while (innerRequest instanceof ServletRequestWrapper) {
+                innerRequest = ((ServletRequestWrapper) innerRequest).getRequest();
+            }
+
+            if (innerRequest instanceof org.apache.catalina.servlet4preview.http.HttpServletRequest) {
+                org.apache.catalina.servlet4preview.http.HttpServletRequest servlet4Request =
+                        (org.apache.catalina.servlet4preview.http.HttpServletRequest) request;
+
+                if (servlet4Request.getServletMapping().getMappingMatch() == MappingMatch.DEFAULT &&
+                        response.getStatus() == HttpServletResponse.SC_NOT_MODIFIED) {
+                    // Default servlet normally sets the content type but does not for
+                    // 304 responses. Look it up.
+                    String servletPath = request.getServletPath();
+                    if (servletPath != null) {
+                        int lastSlash = servletPath.lastIndexOf('/');
+                        if (lastSlash > -1) {
+                            String fileName = servletPath.substring(lastSlash + 1);
+                            contentType = request.getServletContext().getMimeType(fileName);
+                        }
+                    }
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org