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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org