1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.http.impl;
29
30 import java.util.Locale;
31
32 import org.apache.http.HttpStatus;
33 import org.apache.http.ReasonPhraseCatalog;
34 import org.apache.http.annotation.ThreadingBehavior;
35 import org.apache.http.annotation.Contract;
36 import org.apache.http.util.Args;
37
38
39
40
41
42
43
44
45 @Contract(threading = ThreadingBehavior.IMMUTABLE)
46 public class EnglishReasonPhraseCatalog implements ReasonPhraseCatalog {
47
48
49
50
51
52
53
54
55 public final static EnglishReasonPhraseCatalogml#EnglishReasonPhraseCatalog">EnglishReasonPhraseCatalog INSTANCE = new EnglishReasonPhraseCatalog();
56
57
58
59
60
61
62 protected EnglishReasonPhraseCatalog() {
63
64 }
65
66
67
68
69
70
71
72
73
74
75 @Override
76 public String getReason(final int status, final Locale loc) {
77 Args.check(status >= 100 && status < 600, "Unknown category for status code " + status);
78 final int category = status / 100;
79 final int subcode = status - 100*category;
80
81 String reason = null;
82 if (REASON_PHRASES[category].length > subcode) {
83 reason = REASON_PHRASES[category][subcode];
84 }
85
86 return reason;
87 }
88
89
90
91 private static final String[][] REASON_PHRASES = new String[][]{
92 null,
93 new String[3],
94 new String[8],
95 new String[8],
96 new String[30],
97 new String[8]
98 };
99
100
101
102
103
104
105
106
107
108
109 private static void setReason(final int status, final String reason) {
110 final int category = status / 100;
111 final int subcode = status - 100*category;
112 REASON_PHRASES[category][subcode] = reason;
113 }
114
115
116
117
118
119 static {
120
121 setReason(HttpStatus.SC_OK,
122 "OK");
123 setReason(HttpStatus.SC_CREATED,
124 "Created");
125 setReason(HttpStatus.SC_ACCEPTED,
126 "Accepted");
127 setReason(HttpStatus.SC_NO_CONTENT,
128 "No Content");
129 setReason(HttpStatus.SC_MOVED_PERMANENTLY,
130 "Moved Permanently");
131 setReason(HttpStatus.SC_MOVED_TEMPORARILY,
132 "Moved Temporarily");
133 setReason(HttpStatus.SC_NOT_MODIFIED,
134 "Not Modified");
135 setReason(HttpStatus.SC_BAD_REQUEST,
136 "Bad Request");
137 setReason(HttpStatus.SC_UNAUTHORIZED,
138 "Unauthorized");
139 setReason(HttpStatus.SC_FORBIDDEN,
140 "Forbidden");
141 setReason(HttpStatus.SC_NOT_FOUND,
142 "Not Found");
143 setReason(HttpStatus.SC_TOO_MANY_REQUESTS,
144 "Too Many Requests");
145 setReason(HttpStatus.SC_INTERNAL_SERVER_ERROR,
146 "Internal Server Error");
147 setReason(HttpStatus.SC_NOT_IMPLEMENTED,
148 "Not Implemented");
149 setReason(HttpStatus.SC_BAD_GATEWAY,
150 "Bad Gateway");
151 setReason(HttpStatus.SC_SERVICE_UNAVAILABLE,
152 "Service Unavailable");
153
154
155 setReason(HttpStatus.SC_CONTINUE,
156 "Continue");
157 setReason(HttpStatus.SC_TEMPORARY_REDIRECT,
158 "Temporary Redirect");
159 setReason(HttpStatus.SC_METHOD_NOT_ALLOWED,
160 "Method Not Allowed");
161 setReason(HttpStatus.SC_CONFLICT,
162 "Conflict");
163 setReason(HttpStatus.SC_PRECONDITION_FAILED,
164 "Precondition Failed");
165 setReason(HttpStatus.SC_REQUEST_TOO_LONG,
166 "Request Too Long");
167 setReason(HttpStatus.SC_REQUEST_URI_TOO_LONG,
168 "Request-URI Too Long");
169 setReason(HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE,
170 "Unsupported Media Type");
171 setReason(HttpStatus.SC_MULTIPLE_CHOICES,
172 "Multiple Choices");
173 setReason(HttpStatus.SC_SEE_OTHER,
174 "See Other");
175 setReason(HttpStatus.SC_USE_PROXY,
176 "Use Proxy");
177 setReason(HttpStatus.SC_PAYMENT_REQUIRED,
178 "Payment Required");
179 setReason(HttpStatus.SC_NOT_ACCEPTABLE,
180 "Not Acceptable");
181 setReason(HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED,
182 "Proxy Authentication Required");
183 setReason(HttpStatus.SC_REQUEST_TIMEOUT,
184 "Request Timeout");
185
186 setReason(HttpStatus.SC_SWITCHING_PROTOCOLS,
187 "Switching Protocols");
188 setReason(HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION,
189 "Non Authoritative Information");
190 setReason(HttpStatus.SC_RESET_CONTENT,
191 "Reset Content");
192 setReason(HttpStatus.SC_PARTIAL_CONTENT,
193 "Partial Content");
194 setReason(HttpStatus.SC_GATEWAY_TIMEOUT,
195 "Gateway Timeout");
196 setReason(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED,
197 "Http Version Not Supported");
198 setReason(HttpStatus.SC_GONE,
199 "Gone");
200 setReason(HttpStatus.SC_LENGTH_REQUIRED,
201 "Length Required");
202 setReason(HttpStatus.SC_REQUESTED_RANGE_NOT_SATISFIABLE,
203 "Requested Range Not Satisfiable");
204 setReason(HttpStatus.SC_EXPECTATION_FAILED,
205 "Expectation Failed");
206
207
208 setReason(HttpStatus.SC_PROCESSING,
209 "Processing");
210 setReason(HttpStatus.SC_MULTI_STATUS,
211 "Multi-Status");
212 setReason(HttpStatus.SC_UNPROCESSABLE_ENTITY,
213 "Unprocessable Entity");
214 setReason(HttpStatus.SC_INSUFFICIENT_SPACE_ON_RESOURCE,
215 "Insufficient Space On Resource");
216 setReason(HttpStatus.SC_METHOD_FAILURE,
217 "Method Failure");
218 setReason(HttpStatus.SC_LOCKED,
219 "Locked");
220 setReason(HttpStatus.SC_INSUFFICIENT_STORAGE,
221 "Insufficient Storage");
222 setReason(HttpStatus.SC_FAILED_DEPENDENCY,
223 "Failed Dependency");
224 }
225
226
227 }