From 3e94fae5e8c5c3c5e2c19515f8c3c61b5bcb3144 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 6 Nov 2020 09:26:58 -0600 Subject: [PATCH] Issue #5575 - simpler HttpMethod enum Signed-off-by: Joakim Erdfelt --- .../org/eclipse/jetty/http/HttpMethod.java | 86 +++++++++---------- .../eclipse/jetty/http/HttpParserTest.java | 12 +++ 2 files changed, 55 insertions(+), 43 deletions(-) diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java index fc6b27c953c6..b7e2f56ab0cb 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java @@ -31,48 +31,48 @@ public enum HttpMethod { // From https://www.iana.org/assignments/http-methods/http-methods.xhtml - ACL("ACL", Type.IDEMPOTENT), - BASELINE_CONTROL("BASELINE-CONTROL", Type.IDEMPOTENT), - BIND("BIND", Type.IDEMPOTENT), - CHECKIN("CHECKIN", Type.IDEMPOTENT), - CHECKOUT("CHECKOUT", Type.IDEMPOTENT), - CONNECT("CONNECT", Type.NORMAL), - COPY("COPY", Type.IDEMPOTENT), - DELETE("DELETE", Type.IDEMPOTENT), - GET("GET", Type.SAFE), - HEAD("HEAD", Type.SAFE), - LABEL("LABEL", Type.IDEMPOTENT), - LINK("LINK", Type.IDEMPOTENT), - LOCK("LOCK", Type.NORMAL), - MERGE("MERGE", Type.IDEMPOTENT), - MKACTIVITY("MKACTIVITY", Type.IDEMPOTENT), - MKCALENDAR("MKCALENDAR", Type.IDEMPOTENT), - MKCOL("MKCOL", Type.IDEMPOTENT), - MKREDIRECTREF("MKREDIRECTREF", Type.IDEMPOTENT), - MKWORKSPACE("MKWORKSPACE", Type.IDEMPOTENT), - MOVE("MOVE", Type.IDEMPOTENT), - OPTIONS("OPTIONS", Type.SAFE), - ORDERPATCH("ORDERPATCH", Type.IDEMPOTENT), - PATCH("PATCH", Type.NORMAL), - POST("POST", Type.NORMAL), - PRI("PRI", Type.SAFE), - PROPFIND("PROPFIND", Type.SAFE), - PROPPATCH("PROPPATCH", Type.IDEMPOTENT), - PUT("PUT", Type.IDEMPOTENT), - REBIND("REBIND", Type.IDEMPOTENT), - REPORT("REPORT", Type.SAFE), - SEARCH("SEARCH", Type.SAFE), - TRACE("TRACE", Type.SAFE), - UNBIND("UNBIND", Type.IDEMPOTENT), - UNCHECKOUT("UNCHECKOUT", Type.IDEMPOTENT), - UNLINK("UNLINK", Type.IDEMPOTENT), - UNLOCK("UNLOCK", Type.IDEMPOTENT), - UPDATE("UPDATE", Type.IDEMPOTENT), - UPDATEREDIRECTREF("UPDATEREDIRECTREF", Type.IDEMPOTENT), - VERSION_CONTROL("VERSION-CONTROL", Type.IDEMPOTENT), + ACL(Type.IDEMPOTENT), + BASELINE_CONTROL(Type.IDEMPOTENT), + BIND(Type.IDEMPOTENT), + CHECKIN(Type.IDEMPOTENT), + CHECKOUT(Type.IDEMPOTENT), + CONNECT(Type.NORMAL), + COPY(Type.IDEMPOTENT), + DELETE(Type.IDEMPOTENT), + GET(Type.SAFE), + HEAD(Type.SAFE), + LABEL(Type.IDEMPOTENT), + LINK(Type.IDEMPOTENT), + LOCK(Type.NORMAL), + MERGE(Type.IDEMPOTENT), + MKACTIVITY(Type.IDEMPOTENT), + MKCALENDAR(Type.IDEMPOTENT), + MKCOL(Type.IDEMPOTENT), + MKREDIRECTREF(Type.IDEMPOTENT), + MKWORKSPACE(Type.IDEMPOTENT), + MOVE(Type.IDEMPOTENT), + OPTIONS(Type.SAFE), + ORDERPATCH(Type.IDEMPOTENT), + PATCH(Type.NORMAL), + POST(Type.NORMAL), + PRI(Type.SAFE), + PROPFIND(Type.SAFE), + PROPPATCH(Type.IDEMPOTENT), + PUT(Type.IDEMPOTENT), + REBIND(Type.IDEMPOTENT), + REPORT(Type.SAFE), + SEARCH(Type.SAFE), + TRACE(Type.SAFE), + UNBIND(Type.IDEMPOTENT), + UNCHECKOUT(Type.IDEMPOTENT), + UNLINK(Type.IDEMPOTENT), + UNLOCK(Type.IDEMPOTENT), + UPDATE(Type.IDEMPOTENT), + UPDATEREDIRECTREF(Type.IDEMPOTENT), + VERSION_CONTROL(Type.IDEMPOTENT), // Other methods - PROXY("PROXY", Type.NORMAL); + PROXY(Type.NORMAL); // The type of the method private enum Type @@ -81,15 +81,15 @@ private enum Type IDEMPOTENT, SAFE } - + private final String _method; private final byte[] _bytes; private final ByteBuffer _buffer; private final Type _type; - HttpMethod(String method, Type type) + HttpMethod(Type type) { - _method = method; + _method = name().replace('_', '-'); _type = type; _bytes = StringUtil.getBytes(_method); _buffer = ByteBuffer.wrap(_bytes); diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java index 1935ca2fd780..39d72a13be6a 100644 --- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java +++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import org.eclipse.jetty.http.HttpParser.State; import org.eclipse.jetty.toolchain.test.Net; @@ -32,6 +33,8 @@ import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.eclipse.jetty.http.HttpComplianceSection.NO_FIELD_FOLDING; import static org.hamcrest.MatcherAssert.assertThat; @@ -108,6 +111,15 @@ public void httpMethodTest() assertEquals(HttpMethod.GET, HttpMethod.lookAheadGet(b)); } + @ParameterizedTest + @ValueSource(strings = {"GET", "POST", "VERSION-CONTROL"}) + public void httpMethodNameTest(String methodName) + { + HttpMethod method = HttpMethod.fromString(methodName); + assertNotNull(method, "Method should have been found: " + methodName); + assertEquals(methodName.toUpperCase(Locale.US), method.toString()); + } + @Test public void testLineParseMockIP() {