This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push: new 747aa7b Refactor Default servlet to simplify support for custom ETag formats 747aa7b is described below commit 747aa7ba11f05a39339aef8da768ec57ad005912 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 | 27 ++++++++++++++++++---- .../apache/catalina/servlets/WebdavServlet.java | 2 +- webapps/docs/changelog.xml | 5 ++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java index fa2806c..2c8ca97 100644 --- a/java/org/apache/catalina/servlets/DefaultServlet.java +++ b/java/org/apache/catalina/servlets/DefaultServlet.java @@ -902,7 +902,7 @@ public class DefaultServlet extends HttpServlet { ranges = parseRange(request, response, cacheEntry.attributes); // ETag header - response.setHeader("ETag", cacheEntry.attributes.getETag()); + response.setHeader("ETag", generateETag(cacheEntry.attributes)); // Last-Modified header response.setHeader("Last-Modified", @@ -1181,7 +1181,7 @@ public class DefaultServlet extends HttpServlet { // Ignore } - String eTag = resourceAttributes.getETag(); + String eTag = generateETag(resourceAttributes); long lastModified = resourceAttributes.getLastModified(); if (headerValueTime == (-1L)) { @@ -1910,7 +1910,7 @@ public class DefaultServlet extends HttpServlet { HttpServletResponse response, ResourceAttributes resourceAttributes) throws IOException { - String eTag = resourceAttributes.getETag(); + String eTag = generateETag(resourceAttributes); // Default servlet uses weak matching so we strip any leading "W/" and // then compare using equals if (eTag.startsWith("W/")) { @@ -1971,7 +1971,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", resourceAttributes.getETag()); + response.setHeader("ETag", generateETag(resourceAttributes)); return false; } @@ -1998,7 +1998,7 @@ public class DefaultServlet extends HttpServlet { HttpServletResponse response, ResourceAttributes resourceAttributes) throws IOException { - String eTag = resourceAttributes.getETag(); + String eTag = generateETag(resourceAttributes); String headerValue = request.getHeader("If-None-Match"); if (headerValue != null) { @@ -2072,6 +2072,23 @@ public class DefaultServlet extends HttpServlet { /** + * Provides the entity tag (the ETag header) for the given resource + * attributes. Intended to be over-ridden by custom DefaultServlet + * implementations that wish to use an alternative format for the entity + * tag. + * + * @param resourceAttributes The resource attributes for which an entity + * tag is required. + * + * @return The result of calling {@link ResourceAttributes#getETag()} on the given + * resource + */ + protected String generateETag(ResourceAttributes resourceAttributes) { + return resourceAttributes.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 2623a94..d8642ba 100644 --- a/java/org/apache/catalina/servlets/WebdavServlet.java +++ b/java/org/apache/catalina/servlets/WebdavServlet.java @@ -2128,7 +2128,7 @@ public class WebdavServlet extends DefaultServlet { generatePropFindResponse(generatedXML, rewrittenUrl, path, type, propertiesVector, cacheEntry.context == null, false, cacheEntry.attributes.getCreation(), cacheEntry.attributes.getLastModified(), cacheEntry.attributes.getContentLength(), getServletContext().getMimeType(cacheEntry.name), - cacheEntry.attributes.getETag()); + generateETag(cacheEntry.attributes)); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 88cad2b..8e71230 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -67,6 +67,11 @@ prevent a potential exception when running under a security manager. Patch provided by Johnathan Gilday. (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