MCPcopy Index your code
hub / github.com/apache/tomcat / bytesToString

Method bytesToString

java/org/apache/tomcat/util/http/Method.java:89–177  ·  view source on GitHub ↗

Provides optimised conversion from bytes to Strings for known HTTP methods. The bytes are assumed to be an ISO-8859-1 encoded representation of an HTTP method. The method is not validated as being a token, but only valid HTTP method names will be returned. Doing it this way is ~10x faster than u

(byte[] buf, int start, int len)

Source from the content-addressed store, hash-verified

87 * @return The HTTP method as a String or {@code null} if the method is not recognised.
88 */
89 public static String bytesToString(byte[] buf, int start, int len) {
90 switch (buf[start]) {
91 case 'G': {
92 if (len == 3 && buf[start + 1] == 'E' && buf[start + 2] == 'T') {
93 return GET;
94 }
95 break;
96 }
97 case 'P': {
98 if (len == 4 && buf[start + 1] == 'O' && buf[start + 2] == 'S' && buf[start + 3] == 'T') {
99 return POST;
100 } else if (len == 3 && buf[start + 1] == 'U' && buf[start + 2] == 'T') {
101 return PUT;
102 } else if (len == 5 && buf[start + 1] == 'A' && buf[start + 2] == 'T' && buf[start + 3] == 'C' &&
103 buf[start + 4] == 'H') {
104 return PATCH;
105 } else if (len == 8 && buf[start + 1] == 'R' && buf[start + 2] == 'O' && buf[start + 3] == 'P' &&
106 buf[start + 4] == 'F' && buf[start + 5] == 'I' && buf[start + 6] == 'N' &&
107 buf[start + 7] == 'D') {
108 return PROPFIND;
109 } else if (len == 9 && buf[start + 1] == 'R' && buf[start + 2] == 'O' && buf[start + 3] == 'P' &&
110 buf[start + 4] == 'P' && buf[start + 5] == 'A' && buf[start + 6] == 'T' &&
111 buf[start + 7] == 'C' && buf[start + 8] == 'H') {
112 return PROPPATCH;
113 }
114 break;
115 }
116 case 'H': {
117 if (len == 4 && buf[start + 1] == 'E' && buf[start + 2] == 'A' && buf[start + 3] == 'D') {
118 return HEAD;
119 }
120 break;
121 }
122 case 'O': {
123 if (len == 7 && buf[start + 1] == 'P' && buf[start + 2] == 'T' && buf[start + 3] == 'I' &&
124 buf[start + 4] == 'O' && buf[start + 5] == 'N' && buf[start + 6] == 'S') {
125 return OPTIONS;
126 }
127 break;
128 }
129 case 'D': {
130 if (len == 6 && buf[start + 1] == 'E' && buf[start + 2] == 'L' && buf[start + 3] == 'E' &&
131 buf[start + 4] == 'T' && buf[start + 5] == 'E') {
132 return DELETE;
133 }
134 break;
135 }
136 case 'T': {
137 if (len == 5 && buf[start + 1] == 'R' && buf[start + 2] == 'A' && buf[start + 3] == 'C' &&
138 buf[start + 4] == 'E') {
139 return TRACE;
140 }
141 break;
142 }
143 case 'M': {
144 if (len == 5 && buf[start + 1] == 'K' && buf[start + 2] == 'C' && buf[start + 3] == 'O' &&
145 buf[start + 4] == 'L') {
146 return MKCOL;

Callers 3

testHttpMethodParsingMethod · 0.95
setMethodMethod · 0.95

Calls

no outgoing calls

Tested by 2

testHttpMethodParsingMethod · 0.76