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

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

commit 6c06abf43cc27eec30b61f7d178a73f11a748c66
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Sep 11 12:11:36 2025 +0100

    Use constant for HEAD
---
 java/org/apache/catalina/authenticator/FormAuthenticator.java       | 2 +-
 java/org/apache/catalina/connector/OutputBuffer.java                | 3 ++-
 java/org/apache/catalina/filters/CorsFilter.java                    | 2 +-
 java/org/apache/catalina/filters/ExpiresFilter.java                 | 2 +-
 java/org/apache/catalina/servlets/CGIServlet.java                   | 6 +++---
 java/org/apache/catalina/servlets/DefaultServlet.java               | 4 ++--
 java/org/apache/catalina/ssi/SSIServletExternalResolver.java        | 3 ++-
 java/org/apache/coyote/ajp/AjpProcessor.java                        | 3 ++-
 java/org/apache/coyote/ajp/Constants.java                           | 2 +-
 java/org/apache/coyote/http11/Http11Processor.java                  | 3 ++-
 test/javax/servlet/http/HttpServletDoHeadBaseTest.java              | 3 ++-
 test/org/apache/catalina/filters/TestCorsFilter.java                | 2 +-
 test/org/apache/catalina/servlets/TestDefaultServletOptions.java    | 2 +-
 .../catalina/servlets/TestDefaultServletRfc9110Section14.java       | 3 ++-
 .../apache/catalina/servlets/TestWebdavServletOptionCollection.java | 2 +-
 test/org/apache/catalina/servlets/TestWebdavServletOptionsFile.java | 2 +-
 .../apache/catalina/servlets/TestWebdavServletOptionsUnknown.java   | 2 +-
 test/org/apache/catalina/startup/TomcatBaseTest.java                | 2 +-
 test/org/apache/coyote/ajp/SimpleAjpClient.java                     | 4 ++--
 test/org/apache/coyote/http2/Http2TestBase.java                     | 2 +-
 20 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java 
b/java/org/apache/catalina/authenticator/FormAuthenticator.java
index bd18064e7d..dcf783338f 100644
--- a/java/org/apache/catalina/authenticator/FormAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java
@@ -591,7 +591,7 @@ public class FormAuthenticator extends AuthenticatorBase {
         String method = saved.getMethod();
         MimeHeaders rmh = request.getCoyoteRequest().getMimeHeaders();
         rmh.recycle();
-        boolean cacheable = Method.GET.equals(method) || "HEAD".equals(method);
+        boolean cacheable = Method.GET.equals(method) || 
Method.HEAD.equals(method);
         Iterator<String> names = saved.getHeaderNames();
         while (names.hasNext()) {
             String name = names.next();
diff --git a/java/org/apache/catalina/connector/OutputBuffer.java 
b/java/org/apache/catalina/connector/OutputBuffer.java
index 9d0a3c08be..3f7cf9c8cf 100644
--- a/java/org/apache/catalina/connector/OutputBuffer.java
+++ b/java/org/apache/catalina/connector/OutputBuffer.java
@@ -37,6 +37,7 @@ import org.apache.coyote.CloseNowException;
 import org.apache.coyote.Response;
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.C2BConverter;
+import org.apache.tomcat.util.http.Method;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
@@ -239,7 +240,7 @@ public class OutputBuffer extends Writer {
         // AND
         // - some content has been written OR this is NOT a HEAD request
         if (!coyoteResponse.isCommitted() && 
coyoteResponse.getContentLengthLong() == -1 &&
-                (bb.remaining() > 0 || 
!"HEAD".equals(coyoteResponse.getRequest().getMethod()))) {
+                (bb.remaining() > 0 || 
!Method.HEAD.equals(coyoteResponse.getRequest().getMethod()))) {
             coyoteResponse.setContentLength(bb.remaining());
         }
 
diff --git a/java/org/apache/catalina/filters/CorsFilter.java 
b/java/org/apache/catalina/filters/CorsFilter.java
index 329eabc09d..ee388a65ae 100644
--- a/java/org/apache/catalina/filters/CorsFilter.java
+++ b/java/org/apache/catalina/filters/CorsFilter.java
@@ -568,7 +568,7 @@ public class CorsFilter extends GenericFilter {
                 }
                 return CORSRequestType.ACTUAL;
             case Method.GET:
-            case "HEAD":
+            case Method.HEAD:
                 return CORSRequestType.SIMPLE;
             case Method.POST:
                 String mediaType = 
MediaType.parseMediaTypeOnly(request.getContentType());
diff --git a/java/org/apache/catalina/filters/ExpiresFilter.java 
b/java/org/apache/catalina/filters/ExpiresFilter.java
index 8315a26e52..c80bd30374 100644
--- a/java/org/apache/catalina/filters/ExpiresFilter.java
+++ b/java/org/apache/catalina/filters/ExpiresFilter.java
@@ -1425,7 +1425,7 @@ public class ExpiresFilter extends FilterBase {
 
         // Don't add cache headers unless the request is a GET or a HEAD 
request
         String method = request.getMethod();
-        if (!Method.GET.equals(method) && !"HEAD".equals(method)) {
+        if (!Method.GET.equals(method) && !Method.HEAD.equals(method)) {
             if (log.isDebugEnabled()) {
                 log.debug(sm.getString("expiresFilter.invalidMethod", 
request.getRequestURI(), method));
             }
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java 
b/java/org/apache/catalina/servlets/CGIServlet.java
index 4326c73173..c1ca55f250 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -214,7 +214,7 @@ public final class CGIServlet extends HttpServlet {
     private static final String ALLOW_ANY_PATTERN = ".*";
 
     static {
-        DEFAULT_SUPER_METHODS.add("HEAD");
+        DEFAULT_SUPER_METHODS.add(Method.HEAD);
         DEFAULT_SUPER_METHODS.add("OPTIONS");
         DEFAULT_SUPER_METHODS.add("TRACE");
 
@@ -724,8 +724,8 @@ public final class CGIServlet extends HttpServlet {
             // does not contain an unencoded "=" this is an indexed query.
             // The parsed query string becomes the command line parameters
             // for the cgi command.
-            if (enableCmdLineArguments && (Method.GET.equals(req.getMethod()) 
|| req.getMethod().equals(Method.POST) ||
-                    req.getMethod().equals("HEAD"))) {
+            if (enableCmdLineArguments && (Method.GET.equals(req.getMethod()) 
|| Method.POST.equals(req.getMethod()) ||
+                    Method.HEAD.equals(req.getMethod()))) {
                 String qs;
                 if (isIncluded) {
                     qs = (String) 
req.getAttribute(RequestDispatcher.INCLUDE_QUERY_STRING);
diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java 
b/java/org/apache/catalina/servlets/DefaultServlet.java
index 75f83a9c41..91adc827b5 100644
--- a/java/org/apache/catalina/servlets/DefaultServlet.java
+++ b/java/org/apache/catalina/servlets/DefaultServlet.java
@@ -2378,7 +2378,7 @@ public class DefaultServlet extends HttpServlet {
             WebResource resource) {
 
         String method = request.getMethod();
-        if (!Method.GET.equals(method) && !"HEAD".equals(method)) {
+        if (!Method.GET.equals(method) && !Method.HEAD.equals(method)) {
             return true;
         }
 
@@ -2486,7 +2486,7 @@ public class DefaultServlet extends HttpServlet {
             // 304 Not Modified.
             // For every other method, 412 Precondition Failed is sent
             // back.
-            if (Method.GET.equals(request.getMethod()) || 
"HEAD".equals(request.getMethod())) {
+            if (Method.GET.equals(request.getMethod()) || 
Method.HEAD.equals(request.getMethod())) {
                 response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                 response.setHeader("ETag", resourceETag);
             } else {
diff --git a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java 
b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
index 65bf65a99c..3cf7c4ff80 100644
--- a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
+++ b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
@@ -38,6 +38,7 @@ import org.apache.catalina.connector.Connector;
 import org.apache.catalina.connector.Request;
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.UDecoder;
+import org.apache.tomcat.util.http.Method;
 import org.apache.tomcat.util.http.RequestUtil;
 import org.apache.tomcat.util.res.StringManager;
 
@@ -501,7 +502,7 @@ public class SSIServletExternalResolver implements 
SSIExternalResolver {
              * Make an assumption that an empty response is a failure. This is 
a problem if a truly empty file were
              * included, but not sure how else to tell.
              */
-            if (retVal.isEmpty() && !req.getMethod().equals("HEAD")) {
+            if (retVal.isEmpty() && !Method.HEAD.equals(req.getMethod())) {
                 throw new 
IOException(sm.getString("ssiServletExternalResolver.noFile", path));
             }
             return retVal;
diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java 
b/java/org/apache/coyote/ajp/AjpProcessor.java
index 9b74273dba..5c129a13b5 100644
--- a/java/org/apache/coyote/ajp/AjpProcessor.java
+++ b/java/org/apache/coyote/ajp/AjpProcessor.java
@@ -48,6 +48,7 @@ import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.Method;
 import org.apache.tomcat.util.http.MimeHeaders;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
 import org.apache.tomcat.util.net.ApplicationBufferHandler;
@@ -931,7 +932,7 @@ public class AjpProcessor extends AbstractProcessor {
         // Responses with certain status codes and/or methods are not 
permitted to include a response body.
         int statusCode = response.getStatus();
         if (statusCode < 200 || statusCode == 204 || statusCode == 205 || 
statusCode == 304 ||
-                "HEAD".equals(request.getMethod())) {
+                Method.HEAD.equals(request.getMethod())) {
             // No entity body
             swallowResponse = true;
         }
diff --git a/java/org/apache/coyote/ajp/Constants.java 
b/java/org/apache/coyote/ajp/Constants.java
index c979f2f9c7..7363c174f7 100644
--- a/java/org/apache/coyote/ajp/Constants.java
+++ b/java/org/apache/coyote/ajp/Constants.java
@@ -107,7 +107,7 @@ public final class Constants {
 
     // Translates integer codes to names of HTTP methods
     private static final String[] methodTransArray =
-            { "OPTIONS", Method.GET, "HEAD", Method.POST, Method.PUT, 
"DELETE", "TRACE", "PROPFIND", "PROPPATCH", "MKCOL", "COPY",
+            { "OPTIONS", Method.GET, Method.HEAD, Method.POST, Method.PUT, 
"DELETE", "TRACE", "PROPFIND", "PROPPATCH", "MKCOL", "COPY",
                     "MOVE", "LOCK", "UNLOCK", "ACL", "REPORT", 
"VERSION-CONTROL", "CHECKIN", "CHECKOUT", "UNCHECKOUT",
                     "SEARCH", "MKWORKSPACE", "UPDATE", "LABEL", "MERGE", 
"BASELINE-CONTROL", "MKACTIVITY" };
 
diff --git a/java/org/apache/coyote/http11/Http11Processor.java 
b/java/org/apache/coyote/http11/Http11Processor.java
index 3f042ea177..9baecfec8f 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -54,6 +54,7 @@ import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.FastHttpDateFormat;
+import org.apache.tomcat.util.http.Method;
 import org.apache.tomcat.util.http.MimeHeaders;
 import org.apache.tomcat.util.http.parser.HttpParser;
 import org.apache.tomcat.util.http.parser.TokenList;
@@ -901,7 +902,7 @@ public class Http11Processor extends AbstractProcessor {
             }
         }
 
-        boolean head = "HEAD".equals(request.getMethod());
+        boolean head = Method.HEAD.equals(request.getMethod());
         if (head) {
             // Any entity body, if present, should not be sent
             outputBuffer.addActiveFilter(outputFilters[Constants.VOID_FILTER]);
diff --git a/test/javax/servlet/http/HttpServletDoHeadBaseTest.java 
b/test/javax/servlet/http/HttpServletDoHeadBaseTest.java
index 0856a03227..03b928fee3 100644
--- a/test/javax/servlet/http/HttpServletDoHeadBaseTest.java
+++ b/test/javax/servlet/http/HttpServletDoHeadBaseTest.java
@@ -41,6 +41,7 @@ import org.apache.coyote.http2.Http2TestBase;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
 import org.apache.tomcat.util.compat.JreCompat;
+import org.apache.tomcat.util.http.Method;
 
 /*
  * Split into multiple tests as a single test takes so long it impacts the time
@@ -245,7 +246,7 @@ public class HttpServletDoHeadBaseTest extends 
Http2TestBase {
             int adjustedBufferSize = bufferSize;
             boolean resetBufferSize = false;
 
-            if (JreCompat.isJre19Available() && "HEAD".equals(req.getMethod()) 
&& useWriter &&
+            if (JreCompat.isJre19Available() && 
Method.HEAD.equals(req.getMethod()) && useWriter &&
                     resetType != ResetType.NONE) {
                 /*
                  * Using legacy (non-legacy isn't available until Servlet 6.0 
/ Tomcat 10.1.x) HEAD handling with a
diff --git a/test/org/apache/catalina/filters/TestCorsFilter.java 
b/test/org/apache/catalina/filters/TestCorsFilter.java
index bda2d7c7f3..da1b0a8a65 100644
--- a/test/org/apache/catalina/filters/TestCorsFilter.java
+++ b/test/org/apache/catalina/filters/TestCorsFilter.java
@@ -110,7 +110,7 @@ public class TestCorsFilter {
     public void testDoFilterSimpleHEAD() throws IOException, ServletException {
         TesterHttpServletRequest request = new TesterHttpServletRequest();
         request.setHeader(CorsFilter.REQUEST_HEADER_ORIGIN, 
TesterFilterConfigs.HTTPS_WWW_APACHE_ORG);
-        request.setMethod("HEAD");
+        request.setMethod(Method.HEAD);
         TesterHttpServletResponse response = new TesterHttpServletResponse();
 
         CorsFilter corsFilter = new CorsFilter();
diff --git a/test/org/apache/catalina/servlets/TestDefaultServletOptions.java 
b/test/org/apache/catalina/servlets/TestDefaultServletOptions.java
index 7a6ce3ee59..098961f80f 100644
--- a/test/org/apache/catalina/servlets/TestDefaultServletOptions.java
+++ b/test/org/apache/catalina/servlets/TestDefaultServletOptions.java
@@ -34,7 +34,7 @@ public class TestDefaultServletOptions extends 
ServletOptionsBaseTest {
     @Parameters
     public static Collection<Object[]> inputs() {
         String[] urls = new String[] { COLLECTION_NAME, FILE_NAME, 
UNKNOWN_NAME };
-        String[] methods = new String[] { Method.GET, Method.POST, "HEAD", 
"TRACE", Method.PUT, "DELETE" };
+        String[] methods = new String[] { Method.GET, Method.POST, 
Method.HEAD, "TRACE", Method.PUT, "DELETE" };
 
         List<Object[]> result = new ArrayList<>();
 
diff --git 
a/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section14.java 
b/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section14.java
index b7dc76b93b..91aa5b3df2 100644
--- a/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section14.java
+++ b/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section14.java
@@ -31,6 +31,7 @@ import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.http.Method;
 
 public class TestDefaultServletRfc9110Section14 extends TomcatBaseTest {
 
@@ -63,7 +64,7 @@ public class TestDefaultServletRfc9110Section14 extends 
TomcatBaseTest {
         Assert.assertTrue("Range requests is turn on, header `Accept-Ranges: 
bytes` is expected",
                 responseHeaders.containsKey("Accept-Ranges") && 
responseHeaders.get("Accept-Ranges").contains("bytes"));
 
-        rc = methodUrl(path, responseBody, DEFAULT_CLIENT_TIMEOUT_MS, 
requestHeaders, responseHeaders, "HEAD");
+        rc = methodUrl(path, responseBody, DEFAULT_CLIENT_TIMEOUT_MS, 
requestHeaders, responseHeaders, Method.HEAD);
         Assert.assertEquals("Range requests is turn on, SC_OK of HEAD is 
expected", HttpServletResponse.SC_OK, rc);
         Assert.assertTrue("Range requests is turn on, header `Accept-Ranges: 
bytes` is expected",
                 responseHeaders.containsKey("Accept-Ranges") && 
responseHeaders.get("Accept-Ranges").contains("bytes"));
diff --git 
a/test/org/apache/catalina/servlets/TestWebdavServletOptionCollection.java 
b/test/org/apache/catalina/servlets/TestWebdavServletOptionCollection.java
index ab4e6d6c7f..9976f331cd 100644
--- a/test/org/apache/catalina/servlets/TestWebdavServletOptionCollection.java
+++ b/test/org/apache/catalina/servlets/TestWebdavServletOptionCollection.java
@@ -37,7 +37,7 @@ public class TestWebdavServletOptionCollection extends 
ServletOptionsBaseTest {
 
     @Parameters
     public static Collection<Object[]> inputs() {
-        String[] methods = new String[] { Method.GET, Method.POST, "HEAD", 
"TRACE", Method.PUT, "DELETE",
+        String[] methods = new String[] { Method.GET, Method.POST, 
Method.HEAD, "TRACE", Method.PUT, "DELETE",
                 "MKCOL", "LOCK", "UNLOCK", "COPY", "MOVE", "PROPFIND", 
"PROPPATCH" };
 
         List<Object[]> result = new ArrayList<>();
diff --git 
a/test/org/apache/catalina/servlets/TestWebdavServletOptionsFile.java 
b/test/org/apache/catalina/servlets/TestWebdavServletOptionsFile.java
index e554e5b0a2..693c3bff5e 100644
--- a/test/org/apache/catalina/servlets/TestWebdavServletOptionsFile.java
+++ b/test/org/apache/catalina/servlets/TestWebdavServletOptionsFile.java
@@ -37,7 +37,7 @@ public class TestWebdavServletOptionsFile extends 
ServletOptionsBaseTest {
 
     @Parameters
     public static Collection<Object[]> inputs() {
-        String[] methods = new String[] { Method.GET, Method.POST, "HEAD", 
"TRACE", Method.PUT, "DELETE",
+        String[] methods = new String[] { Method.GET, Method.POST, 
Method.HEAD, "TRACE", Method.PUT, "DELETE",
                 "MKCOL", "LOCK", "UNLOCK", "COPY", "MOVE", "PROPFIND", 
"PROPPATCH" };
 
         List<Object[]> result = new ArrayList<>();
diff --git 
a/test/org/apache/catalina/servlets/TestWebdavServletOptionsUnknown.java 
b/test/org/apache/catalina/servlets/TestWebdavServletOptionsUnknown.java
index 58c58d286e..b15741d97f 100644
--- a/test/org/apache/catalina/servlets/TestWebdavServletOptionsUnknown.java
+++ b/test/org/apache/catalina/servlets/TestWebdavServletOptionsUnknown.java
@@ -37,7 +37,7 @@ public class TestWebdavServletOptionsUnknown extends 
ServletOptionsBaseTest {
 
     @Parameters
     public static Collection<Object[]> inputs() {
-        String[] methods = new String[] { Method.GET, Method.POST, "HEAD", 
"TRACE", Method.PUT, "DELETE",
+        String[] methods = new String[] { Method.GET, Method.POST, 
Method.HEAD, "TRACE", Method.PUT, "DELETE",
                 "MKCOL", "LOCK", "UNLOCK", "COPY", "MOVE", "PROPFIND", 
"PROPPATCH" };
 
         List<Object[]> result = new ArrayList<>();
diff --git a/test/org/apache/catalina/startup/TomcatBaseTest.java 
b/test/org/apache/catalina/startup/TomcatBaseTest.java
index d5acd9dafc..3ea3e92461 100644
--- a/test/org/apache/catalina/startup/TomcatBaseTest.java
+++ b/test/org/apache/catalina/startup/TomcatBaseTest.java
@@ -669,7 +669,7 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
 
     public static int headUrl(String path, ByteChunk out, Map<String, 
List<String>> resHead)
             throws IOException {
-        return methodUrl(path, out, DEFAULT_CLIENT_TIMEOUT_MS, null, resHead, 
"HEAD");
+        return methodUrl(path, out, DEFAULT_CLIENT_TIMEOUT_MS, null, resHead, 
Method.HEAD);
     }
 
     public static int getUrl(String path, ByteChunk out, Map<String, 
List<String>> reqHead,
diff --git a/test/org/apache/coyote/ajp/SimpleAjpClient.java 
b/test/org/apache/coyote/ajp/SimpleAjpClient.java
index c7d401df13..1a365e47a6 100644
--- a/test/org/apache/coyote/ajp/SimpleAjpClient.java
+++ b/test/org/apache/coyote/ajp/SimpleAjpClient.java
@@ -82,7 +82,7 @@ public class SimpleAjpClient {
             case Method.GET:
                 this.method = 2;
                 break;
-            case "HEAD":
+            case Method.HEAD:
                 this.method = 3;
                 break;
             case Method.POST:
@@ -169,7 +169,7 @@ public class SimpleAjpClient {
             case 2:
                 return Method.GET;
             case 3:
-                return "HEAD";
+                return Method.HEAD;
             case 4:
                 return Method.POST;
             case 5:
diff --git a/test/org/apache/coyote/http2/Http2TestBase.java 
b/test/org/apache/coyote/http2/Http2TestBase.java
index 4eb1ecc9d8..3e1f15c42c 100644
--- a/test/org/apache/coyote/http2/Http2TestBase.java
+++ b/test/org/apache/coyote/http2/Http2TestBase.java
@@ -450,7 +450,7 @@ public abstract class Http2TestBase extends TomcatBaseTest {
 
     protected void buildHeadRequest(byte[] headersFrameHeader, ByteBuffer 
headersPayload, int streamId, String path) {
         MimeHeaders headers = new MimeHeaders();
-        headers.addValue(":method").setString("HEAD");
+        headers.addValue(":method").setString(Method.HEAD);
         headers.addValue(":scheme").setString("http");
         headers.addValue(":path").setString(path);
         headers.addValue(":authority").setString("localhost:" + getPort());


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

Reply via email to