|
|||||||||||||||||||
Source file | Conditionals | Statements | Methods | TOTAL | |||||||||||||||
WebdavStatus.java | 50% | 96.8% | 100% | 94.3% |
|
1 | /* | |
2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
3 | * contributor license agreements. See the NOTICE file distributed with | |
4 | * this work for additional information regarding copyright ownership. | |
5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
6 | * (the "License"); you may not use this file except in compliance with | |
7 | * the License. You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | * | |
17 | * $Id: WebdavStatus.java 541515 2007-05-25 02:45:06Z vgritsenko $ | |
18 | */ | |
19 | ||
20 | package org.apache.xindice.webadmin.webdav; | |
21 | ||
22 | import java.util.Map; | |
23 | import java.util.HashMap; | |
24 | import javax.servlet.http.HttpServletResponse; | |
25 | ||
26 | /** | |
27 | * Wraps the HttpServletResponse class to abstract the specific protocol | |
28 | * used. To support other protocols we would only need to modify this class. | |
29 | * | |
30 | * @author Marc Eaddy | |
31 | * @version $Revision: 541515 $, $Date: 2007-05-24 19:45:06 -0700 (Thu, 24 May 2007) $ | |
32 | */ | |
33 | public class WebdavStatus { | |
34 | ||
35 | // ------------------------------------------------------ HTTP Status Codes | |
36 | ||
37 | /** | |
38 | * Status code (200) indicating the request succeeded normally. | |
39 | */ | |
40 | public static final int SC_OK = HttpServletResponse.SC_OK; | |
41 | ||
42 | /** | |
43 | * Status code (201) indicating the request succeeded and created | |
44 | * a new resource on the server. | |
45 | */ | |
46 | public static final int SC_CREATED = HttpServletResponse.SC_CREATED; | |
47 | ||
48 | /** | |
49 | * Status code (202) indicating that a request was accepted for | |
50 | * processing, but was not completed. | |
51 | */ | |
52 | public static final int SC_ACCEPTED = HttpServletResponse.SC_ACCEPTED; | |
53 | ||
54 | /** | |
55 | * Status code (204) indicating that the request succeeded but that | |
56 | * there was no new information to return. | |
57 | */ | |
58 | public static final int SC_NO_CONTENT = HttpServletResponse.SC_NO_CONTENT; | |
59 | ||
60 | /** | |
61 | * Status code (301) indicating that the resource has permanently | |
62 | * moved to a new location, and that future references should use a | |
63 | * new URI with their requests. | |
64 | */ | |
65 | public static final int SC_MOVED_PERMANENTLY = HttpServletResponse.SC_MOVED_PERMANENTLY; | |
66 | ||
67 | /** | |
68 | * Status code (302) indicating that the resource has temporarily | |
69 | * moved to another location, but that future references should | |
70 | * still use the original URI to access the resource. | |
71 | */ | |
72 | public static final int SC_MOVED_TEMPORARILY = HttpServletResponse.SC_MOVED_TEMPORARILY; | |
73 | ||
74 | /** | |
75 | * Status code (304) indicating that a conditional GET operation | |
76 | * found that the resource was available and not modified. | |
77 | */ | |
78 | public static final int SC_NOT_MODIFIED = HttpServletResponse.SC_NOT_MODIFIED; | |
79 | ||
80 | /** | |
81 | * Status code (400) indicating the request sent by the client was | |
82 | * syntactically incorrect. | |
83 | */ | |
84 | public static final int SC_BAD_REQUEST = HttpServletResponse.SC_BAD_REQUEST; | |
85 | ||
86 | /** | |
87 | * Status code (401) indicating that the request requires HTTP | |
88 | * authentication. | |
89 | */ | |
90 | public static final int SC_UNAUTHORIZED = HttpServletResponse.SC_UNAUTHORIZED; | |
91 | ||
92 | /** | |
93 | * Status code (403) indicating the server understood the request | |
94 | * but refused to fulfill it. | |
95 | */ | |
96 | public static final int SC_FORBIDDEN = HttpServletResponse.SC_FORBIDDEN; | |
97 | ||
98 | /** | |
99 | * Status code (404) indicating that the requested resource is not | |
100 | * available. | |
101 | */ | |
102 | public static final int SC_NOT_FOUND = HttpServletResponse.SC_NOT_FOUND; | |
103 | ||
104 | /** | |
105 | * Status code (500) indicating an error inside the HTTP service | |
106 | * which prevented it from fulfilling the request. | |
107 | */ | |
108 | public static final int SC_INTERNAL_SERVER_ERROR = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; | |
109 | ||
110 | /** | |
111 | * Status code (501) indicating the HTTP service does not support | |
112 | * the functionality needed to fulfill the request. | |
113 | */ | |
114 | public static final int SC_NOT_IMPLEMENTED = HttpServletResponse.SC_NOT_IMPLEMENTED; | |
115 | ||
116 | /** | |
117 | * Status code (502) indicating that the HTTP server received an | |
118 | * invalid response from a server it consulted when acting as a | |
119 | * proxy or gateway. | |
120 | */ | |
121 | public static final int SC_BAD_GATEWAY = HttpServletResponse.SC_BAD_GATEWAY; | |
122 | ||
123 | /** | |
124 | * Status code (503) indicating that the HTTP service is | |
125 | * temporarily overloaded, and unable to handle the request. | |
126 | */ | |
127 | public static final int SC_SERVICE_UNAVAILABLE = HttpServletResponse.SC_SERVICE_UNAVAILABLE; | |
128 | ||
129 | /** | |
130 | * Status code (100) indicating the client may continue with | |
131 | * its request. This interim response is used to inform the | |
132 | * client that the initial part of the request has been | |
133 | * received and has not yet been rejected by the server. | |
134 | */ | |
135 | public static final int SC_CONTINUE = HttpServletResponse.SC_CONTINUE; | |
136 | ||
137 | /** | |
138 | * Status code (405) indicating the method specified is not | |
139 | * allowed for the resource. | |
140 | */ | |
141 | public static final int SC_METHOD_NOT_ALLOWED = HttpServletResponse.SC_METHOD_NOT_ALLOWED; | |
142 | ||
143 | /** | |
144 | * Status code (409) indicating that the request could not be | |
145 | * completed due to a conflict with the current state of the | |
146 | * resource. | |
147 | */ | |
148 | public static final int SC_CONFLICT = HttpServletResponse.SC_CONFLICT; | |
149 | ||
150 | /** | |
151 | * Status code (412) indicating the precondition given in one | |
152 | * or more of the request-header fields evaluated to false | |
153 | * when it was tested on the server. | |
154 | */ | |
155 | public static final int SC_PRECONDITION_FAILED = HttpServletResponse.SC_PRECONDITION_FAILED; | |
156 | ||
157 | /** | |
158 | * Status code (413) indicating the server is refusing to | |
159 | * process a request because the request entity is larger | |
160 | * than the server is willing or able to process. | |
161 | */ | |
162 | public static final int SC_REQUEST_ENTITY_TOO_LARGE = HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE; | |
163 | ||
164 | /** | |
165 | * Status code (415) indicating the server is refusing to service | |
166 | * the request because the entity of the request is in a format | |
167 | * not supported by the requested resource for the requested | |
168 | * method. | |
169 | */ | |
170 | public static final int SC_UNSUPPORTED_MEDIA_TYPE = HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE; | |
171 | ||
172 | // -------------------------------------------- Extended WebDav status code | |
173 | ||
174 | /** | |
175 | * Status code (207) indicating that the response requires | |
176 | * providing status for multiple independent operations. | |
177 | */ | |
178 | public static final int SC_MULTI_STATUS = 207; | |
179 | ||
180 | /** | |
181 | * Status code (422) indicating the entity body submitted with | |
182 | * the PATCH method was not understood by the resource. | |
183 | */ | |
184 | public static final int SC_UNPROCESSABLE_ENTITY = 422; | |
185 | ||
186 | /** | |
187 | * Status code (507) indicating that the resource does not have | |
188 | * sufficient space to record the state of the resource after the | |
189 | * execution of this method. | |
190 | */ | |
191 | public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 507; | |
192 | ||
193 | /** | |
194 | * Status code (424) indicating the method was not executed on | |
195 | * a particular resource within its scope because some part of | |
196 | * the method's execution failed causing the entire method to be | |
197 | * aborted. | |
198 | */ | |
199 | public static final int SC_FAILED_DEPENDENCY = 424; | |
200 | ||
201 | /** | |
202 | * Status code (423) indicating the destination resource of a | |
203 | * method is locked, and either the request did not contain a | |
204 | * valid Lock-Info header, or the Lock-Info header identifies | |
205 | * a lock held by another principal. | |
206 | */ | |
207 | public static final int SC_LOCKED = 423; | |
208 | ||
209 | /** | |
210 | * This Hashtable contains the mapping of HTTP and WebDAV | |
211 | * status codes to descriptive text. | |
212 | */ | |
213 | private static Map mapStatusCodes = new HashMap(); | |
214 | static { | |
215 | // HTTP 1.1 status codes | |
216 | 1 | addStatusCodeMap(SC_OK, "OK"); |
217 | 1 | addStatusCodeMap(SC_CREATED, "Created"); |
218 | 1 | addStatusCodeMap(SC_ACCEPTED, "Accepted"); |
219 | 1 | addStatusCodeMap(SC_NO_CONTENT, "No Content"); |
220 | 1 | addStatusCodeMap(SC_MOVED_PERMANENTLY, "Moved Permanently"); |
221 | 1 | addStatusCodeMap(SC_MOVED_TEMPORARILY, "Moved Temporarily"); |
222 | 1 | addStatusCodeMap(SC_NOT_MODIFIED, "Not Modified"); |
223 | 1 | addStatusCodeMap(SC_BAD_REQUEST, "Bad Request"); |
224 | 1 | addStatusCodeMap(SC_UNAUTHORIZED, "Unauthorized"); |
225 | 1 | addStatusCodeMap(SC_FORBIDDEN, "Forbidden"); |
226 | 1 | addStatusCodeMap(SC_NOT_FOUND, "Not Found"); |
227 | 1 | addStatusCodeMap(SC_INTERNAL_SERVER_ERROR, "Internal Server Error"); |
228 | 1 | addStatusCodeMap(SC_NOT_IMPLEMENTED, "Not Implemented"); |
229 | 1 | addStatusCodeMap(SC_BAD_GATEWAY, "Bad Gateway"); |
230 | 1 | addStatusCodeMap(SC_SERVICE_UNAVAILABLE, "Service Unavailable"); |
231 | 1 | addStatusCodeMap(SC_CONTINUE, "Continue"); |
232 | 1 | addStatusCodeMap(SC_METHOD_NOT_ALLOWED, "Method Not Allowed"); |
233 | 1 | addStatusCodeMap(SC_CONFLICT, "Conflict"); |
234 | 1 | addStatusCodeMap(SC_PRECONDITION_FAILED, "Precondition Failed"); |
235 | 1 | addStatusCodeMap(SC_REQUEST_ENTITY_TOO_LARGE, "Request Too Long"); |
236 | 1 | addStatusCodeMap(SC_UNSUPPORTED_MEDIA_TYPE, "Unsupported Media Type"); |
237 | // WebDav status sodes | |
238 | 1 | addStatusCodeMap(SC_MULTI_STATUS, "Multi-Status"); |
239 | 1 | addStatusCodeMap(SC_UNPROCESSABLE_ENTITY, "Unprocessable Entity"); |
240 | 1 | addStatusCodeMap(SC_INSUFFICIENT_SPACE_ON_RESOURCE, "Insufficient Space On Resource"); |
241 | 1 | addStatusCodeMap(SC_FAILED_DEPENDENCY, "Failed Dependency"); |
242 | 1 | addStatusCodeMap(SC_LOCKED, "Locked"); |
243 | } | |
244 | ||
245 | /** | |
246 | * Returns the HTTP status text for the HTTP or WebDav status code | |
247 | * specified by looking it up in the mapping. | |
248 | * | |
249 | * @param statusCode HTTP or WebDAV status code | |
250 | * @return A string with a short descriptive phrase for the | |
251 | * HTTP status code (e.g., "OK"). | |
252 | */ | |
253 | 16 | public static String getStatusText(int statusCode) { |
254 | 16 | Integer intKey = new Integer(statusCode); |
255 | ||
256 | 16 | if (!mapStatusCodes.containsKey(intKey)) { |
257 | 0 | return ""; |
258 | } else { | |
259 | 16 | return (String) mapStatusCodes.get(intKey); |
260 | } | |
261 | } | |
262 | ||
263 | /** | |
264 | * Adds a new status code -> status text mapping. This is a static | |
265 | * method because the mapping is a static variable. | |
266 | * | |
267 | * @param key HTTP or WebDAV status code | |
268 | * @param strVal HTTP status text | |
269 | */ | |
270 | 26 | private static void addStatusCodeMap(int key, String strVal) { |
271 | 26 | mapStatusCodes.put(new Integer(key), strVal); |
272 | } | |
273 | } | |
274 |
|