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 238ca09 Refactor Default servlet to simplify support for custom ETag formats 238ca09 is described below commit 238ca092e107633e589081e9dd46c8415c263bdc Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Aug 10 17:19:52 2020 +0100 Refactor Default servlet to simplify support for custom ETag formats --- .../apache/catalina/servlets/DefaultServlet.java | 25 +++++++++++++++++----- .../apache/catalina/servlets/WebdavServlet.java | 2 +- webapps/docs/changelog.xml | 5 +++++ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java index 571c754..a89148b 100644 --- a/java/org/apache/catalina/servlets/DefaultServlet.java +++ b/java/org/apache/catalina/servlets/DefaultServlet.java @@ -912,7 +912,7 @@ public class DefaultServlet extends HttpServlet { String eTag = null; String lastModifiedHttp = null; if (resource.isFile() && !isError) { - eTag = resource.getETag(); + eTag = generateETag(resource); lastModifiedHttp = resource.getLastModifiedHttp(); } @@ -1480,7 +1480,7 @@ public class DefaultServlet extends HttpServlet { // Ignore } - String eTag = resource.getETag(); + String eTag = generateETag(resource); long lastModified = resource.getLastModified(); if (headerValueTime == (-1L)) { @@ -2307,7 +2307,7 @@ public class DefaultServlet extends HttpServlet { HttpServletResponse response, WebResource resource) throws IOException { - String eTag = resource.getETag(); + String eTag = generateETag(resource); // Default servlet uses weak matching so we strip any leading "W/" and // then compare using equals if (eTag.startsWith("W/")) { @@ -2368,7 +2368,7 @@ public class DefaultServlet extends HttpServlet { // The entity has not been modified since the date // specified by the client. This is not an error case. response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); - response.setHeader("ETag", resource.getETag()); + response.setHeader("ETag", generateETag(resource)); return false; } @@ -2395,7 +2395,7 @@ public class DefaultServlet extends HttpServlet { HttpServletResponse response, WebResource resource) throws IOException { - String eTag = resource.getETag(); + String eTag = generateETag(resource); String headerValue = request.getHeader("If-None-Match"); if (headerValue != null) { @@ -2469,6 +2469,21 @@ public class DefaultServlet extends HttpServlet { /** + * Provides the entity tag (the ETag header) for the given resource. + * Intended to be over-ridden by custom DefaultServlet implementations that + * wish to use an alternative format for the entity tag. + * + * @param resource The resource for which an entity tag is required. + * + * @return The result of calling {@link WebResource#getETag()} on the given + * resource + */ + protected String generateETag(WebResource resource) { + return resource.getETag(); + } + + + /** * Copy the contents of the specified input stream to the specified * output stream, and ensure that both streams are closed before returning * (even in the face of an exception). diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java b/java/org/apache/catalina/servlets/WebdavServlet.java index b3c558d..30db796 100644 --- a/java/org/apache/catalina/servlets/WebdavServlet.java +++ b/java/org/apache/catalina/servlets/WebdavServlet.java @@ -1997,7 +1997,7 @@ public class WebdavServlet extends DefaultServlet { generatePropFindResponse(generatedXML, rewrittenUrl, path, type, propertiesVector, resource.isFile(), false, resource.getCreation(), resource.getLastModified(), resource.getContentLength(), getServletContext().getMimeType(resource.getName()), - resource.getETag()); + generateETag(resource)); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 47413b6..a59bff9 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -63,6 +63,11 @@ issuing the 404 response to give the rewrite valve, if configured, an opportunity to rewrite the request. (remm/markt) </fix> + <add> + Refactor the Default servlet to provide a single method that can be + overridden (<code>generateETag()</code>) should a custom entity tag + format be required. (markt) + </add> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org