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

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


The following commit(s) were added to refs/heads/main by this push:
     new 7a60e1d22f Refactoring
7a60e1d22f is described below

commit 7a60e1d22f63d8ef11f7c9440c367a202f4842d5
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Dec 12 10:58:59 2024 +0000

    Refactoring
    
    Policy -> Precondition
    Split Date and ETag Enums
    Make Enums private
    Code clean-up - formatting
---
 ...efaultServletRfc9110Section13Parameterized.java | 213 +++++++++------------
 1 file changed, 95 insertions(+), 118 deletions(-)

diff --git 
a/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section13Parameterized.java
 
b/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section13Parameterized.java
index a8e1a7dcfb..9f9b7926b6 100644
--- 
a/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section13Parameterized.java
+++ 
b/test/org/apache/catalina/servlets/TestDefaultServletRfc9110Section13Parameterized.java
@@ -26,7 +26,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Objects;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -53,15 +52,15 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
     @Parameter(1)
     public Task task;
     @Parameter(2)
-    public IfPolicy ifMatchHeader;
+    public EtagPrecondition ifMatchPrecondition;
     @Parameter(3)
-    public IfPolicy ifUnmodifiedSinceHeader;
+    public DatePrecondition ifUnmodifiedSincePrecondition;
     @Parameter(4)
-    public IfPolicy ifNoneMatchHeader;
+    public EtagPrecondition ifNoneMatchPrecondition;
     @Parameter(5)
-    public IfPolicy ifModifiedSinceHeader;
+    public DatePrecondition ifModifiedSincePrecondition;
     @Parameter(6)
-    public IfPolicy ifRangeHeader;
+    public EtagPrecondition ifRangePrecondition;
     @Parameter(7)
     public boolean autoRangeHeader;
     @Parameter(8)
@@ -71,47 +70,47 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
     public static Collection<Object[]> parameters() {
         List<Object[]> parameterSets = new ArrayList<>();
         // testPreconditions_rfc9110_13_2_2_1_head0
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_ALL, null, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_EXACTLY, null, null, null,
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.ALL, null, null, null,
                 null, Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_IN, null, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_NOT_IN, null, null, null,
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.EXACTLY, null, null, null,
+                null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.IN, null, null, null,
+                null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.NOT_IN, null, null, null,
                 null, Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_SYNTAX_INVALID, null, null,
-                null, null, Boolean.FALSE, SC_400 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.INVALID_ALL_PLUS_OTHER,
+                null, null, null, null, Boolean.FALSE, SC_400 });
 
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_ALL, null, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_EXACTLY, null, null, null,
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.ALL, null, null, null,
+                null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.EXACTLY, null, null,
+                null, null, Boolean.FALSE, SC_412 });
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.IN, null, null, null,
                 null, Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_IN, null, null, null, null,
-                Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_NOT_IN, null, null, null,
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.NOT_IN, null, null, null,
                 null, Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
IfPolicy.ETAG_SYNTAX_INVALID, null, null,
-                null, null, Boolean.FALSE, SC_400 });
-
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_EQ, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_LT, null, null, null,
-                Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_GT, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_MULTI_IN, null, null,
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
EtagPrecondition.INVALID_ALL_PLUS_OTHER,
+                null, null, null, null, Boolean.FALSE, SC_400 });
+
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.EQ, null, null,
                 null, Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_LT, null, IfPolicy.DATE_GT,
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.LT, null, null,
                 null, Boolean.FALSE, SC_412 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.GT, null, null,
+                null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.MULTI_IN, null,
+                null, null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.TRUE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.LT, null,
+                DatePrecondition.GT, null, Boolean.FALSE, SC_412 });
 
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_EQ, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_LT, null, null, null,
-                Boolean.FALSE, SC_412 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_GT, null, null, null,
-                Boolean.FALSE, SC_200 });
-        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, IfPolicy.DATE_MULTI_IN, null, null,
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.EQ, null, null,
                 null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.LT, null, null,
+                null, Boolean.FALSE, SC_412 });
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.GT, null, null,
+                null, Boolean.FALSE, SC_200 });
+        parameterSets.add(new Object[] { Boolean.FALSE, Task.HEAD_INDEX_HTML, 
null, DatePrecondition.MULTI_IN, null,
+                null, null, Boolean.FALSE, SC_200 });
 
 
         return parameterSets;
@@ -123,7 +122,7 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
     private static Integer SC_412 = Integer.valueOf(412);
 
 
-    enum HTTP_METHOD {
+    private enum HTTP_METHOD {
         GET,
         PUT,
         DELETE,
@@ -131,7 +130,8 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
         HEAD
     }
 
-    enum Task {
+
+    private enum Task {
         HEAD_INDEX_HTML(HTTP_METHOD.HEAD, "/index.html"),
         HEAD_404_HTML(HTTP_METHOD.HEAD, "/sc_404.html"),
 
@@ -165,56 +165,48 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
         }
     }
 
-    enum IfPolicy {
-        ETAG_EXACTLY,
-        ETAG_IN,
-        ETAG_ALL,
-        ETAG_NOT_IN,
-        ETAG_SYNTAX_INVALID,
+
+    private enum EtagPrecondition {
+        EXACTLY,
+        IN,
+        ALL,
+        NOT_IN,
+        INVALID_ALL_PLUS_OTHER
+    }
+
+
+    private enum DatePrecondition {
         /**
          * Condition header value of http date is equivalent to actual 
resource lastModified date
          */
-        DATE_EQ,
+        EQ,
         /**
          * Condition header value of http date is greater(later) than actual 
resource lastModified date
          */
-        DATE_GT,
+        GT,
         /**
          * Condition header value of http date is less(earlier) than actual 
resource lastModified date
          */
-        DATE_LT,
-        DATE_MULTI_IN,
+        LT,
+        MULTI_IN,
         /**
          * not a valid HTTP-date
          */
-        DATE_SEMANTIC_INVALID;
+        INVALID;
     }
 
-    enum IfType {
-        ifMatch("If-Match"), // ETag strong comparison
-        ifUnmodifiedSince("If-Unmodified-Since"),
-        ifNoneMatch("If-None-Match"), // ETag weak comparison
-        ifModifiedSince("If-Modified-Since"),
-        ifRange("If-Range"); // ETag strong comparison
-
-        private String header;
-
-        IfType(String header) {
-            this.header = header;
-        }
 
-        public String value() {
-            return this.header;
+    protected void genETagPrecondition(String strongETag, String weakETag, 
EtagPrecondition condition,
+            String headerName, Map<String,List<String>> requestHeaders) {
+        if (condition == null) {
+            return;
         }
-    }
-
-    protected List<String> genETagCondtion(String strongETag, String weakETag, 
IfPolicy policy) {
         List<String> headerValues = new ArrayList<>();
-        switch (policy) {
-            case ETAG_ALL:
+        switch (condition) {
+            case ALL:
                 headerValues.add("*");
                 break;
-            case ETAG_EXACTLY:
+            case EXACTLY:
                 if (strongETag != null) {
                     headerValues.add(strongETag);
                 } else {
@@ -222,12 +214,12 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
                     throw new IllegalArgumentException("strong etag not 
found!");
                 }
                 break;
-            case ETAG_IN:
+            case IN:
                 headerValues.add("\"1a2b3c4d\"");
                 headerValues.add(weakETag + "," + strongETag + ",W/\"*\"");
                 headerValues.add("\"abcdefg\"");
                 break;
-            case ETAG_NOT_IN:
+            case NOT_IN:
                 if (weakETag != null && weakETag.length() > 8) {
                     headerValues.add(weakETag.substring(0, 3) + "XXXXX" + 
weakETag.substring(8));
                 }
@@ -235,52 +227,50 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
                     headerValues.add(strongETag.substring(0, 1) + "XXXXX" + 
strongETag.substring(6));
                 }
                 break;
-            case ETAG_SYNTAX_INVALID:
+            case INVALID_ALL_PLUS_OTHER:
                 headerValues.add("*");
                 headerValues.add("W/\"1abcd\"");
                 break;
-            default:
-                break;
         }
-        return headerValues;
+        if (!headerValues.isEmpty()) {
+            requestHeaders.put(headerName, headerValues);
+        }
     }
 
-    protected List<String> genDateCondtion(long lastModifiedTimestamp, 
IfPolicy policy) {
-        List<String> headerValues = new ArrayList<>();
-        if (lastModifiedTimestamp <= 0) {
-            return headerValues;
+
+    protected void genDatePrecondition(long lastModifiedTimestamp, 
DatePrecondition condition, String headerName,
+            Map<String,List<String>> requestHeaders) {
+        if (condition == null || lastModifiedTimestamp <= 0) {
+            return;
         }
-        switch (policy) {
-            case DATE_EQ:
+        List<String> headerValues = new ArrayList<>();
+        switch (condition) {
+            case EQ:
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp));
                 break;
-            case DATE_GT:
+            case GT:
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp + 30000L));
                 break;
-            case DATE_LT:
+            case LT:
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp - 30000L));
                 break;
-            case DATE_MULTI_IN:
+            case MULTI_IN:
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp - 30000L));
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp));
                 
headerValues.add(FastHttpDateFormat.formatDate(lastModifiedTimestamp + 30000L));
                 break;
-            case DATE_SEMANTIC_INVALID:
+            case INVALID:
                 headerValues.add("2024.12.09 GMT");
                 break;
-            default:
-                break;
         }
-        return headerValues;
+        if (!headerValues.isEmpty()) {
+            requestHeaders.put(headerName, headerValues);
+        }
     }
 
-    protected void wrapperHeaders(Map<String,List<String>> headers, String 
resourceETag, long lastModified,
-            IfPolicy policy, IfType type) {
-        Objects.requireNonNull(type);
-        if (policy == null) {
-            return;
-        }
-        List<String> headerValues = new ArrayList<>();
+    protected void addPreconditionHeaders(Map<String,List<String>> 
requestHeaders, String resourceETag,
+            long lastModified) {
+
         String weakETag = resourceETag;
         String strongETag = resourceETag;
         if (resourceETag != null) {
@@ -291,19 +281,11 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
             }
         }
 
-        List<String> eTagConditions = genETagCondtion(strongETag, weakETag, 
policy);
-        if (!eTagConditions.isEmpty()) {
-            headerValues.addAll(eTagConditions);
-        }
-
-        List<String> dateConditions = genDateCondtion(lastModified, policy);
-        if (!dateConditions.isEmpty()) {
-            headerValues.addAll(dateConditions);
-        }
-
-        if (!headerValues.isEmpty()) {
-            headers.put(type.value(), headerValues);
-        }
+        genETagPrecondition(strongETag, weakETag, ifMatchPrecondition, 
"If-Match", requestHeaders);
+        genDatePrecondition(lastModified, ifUnmodifiedSincePrecondition, 
"If-Unmodified-Since", requestHeaders);
+        genETagPrecondition(strongETag, weakETag, ifNoneMatchPrecondition, 
"If-None-Match", requestHeaders);
+        genDatePrecondition(lastModified, ifModifiedSincePrecondition, 
"If-Modified-Since", requestHeaders);
+        genETagPrecondition(strongETag, weakETag, ifRangePrecondition, 
"If-Range", requestHeaders);
     }
 
     private File tempDocBase = null;
@@ -358,14 +340,12 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
 
         Assert.assertNotNull(task);
 
-
         Map<String,List<String>> requestHeaders = new HashMap<>();
-
         Map<String,List<String>> responseHeaders = new HashMap<>();
-
         String etag = null;
         long lastModified = -1;
         String uri = "http://localhost:"; + getPort() + task.uri;
+
         // Try head to receives etag and lastModified Date
         int sc = headUrl(uri, new ByteChunk(), responseHeaders);
         if (sc == 200) {
@@ -376,11 +356,8 @@ public class 
TestDefaultServletRfc9110Section13Parameterized extends TomcatBaseT
             }
         }
 
-        wrapperHeaders(requestHeaders, etag, lastModified, ifMatchHeader, 
IfType.ifMatch);
-        wrapperHeaders(requestHeaders, etag, lastModified, 
ifModifiedSinceHeader, IfType.ifModifiedSince);
-        wrapperHeaders(requestHeaders, etag, lastModified, ifNoneMatchHeader, 
IfType.ifNoneMatch);
-        wrapperHeaders(requestHeaders, etag, lastModified, 
ifUnmodifiedSinceHeader, IfType.ifUnmodifiedSince);
-        wrapperHeaders(requestHeaders, etag, lastModified, ifRangeHeader, 
IfType.ifRange);
+        addPreconditionHeaders(requestHeaders, etag, lastModified);
+
         responseHeaders.clear();
         sc = 0;
         SimpleHttpClient client = null;


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

Reply via email to