summaryrefslogtreecommitdiffstats
path: root/simple/simple-http/src/main/java/org/simpleframework/http/Status.java
diff options
context:
space:
mode:
Diffstat (limited to 'simple/simple-http/src/main/java/org/simpleframework/http/Status.java')
-rw-r--r--simple/simple-http/src/main/java/org/simpleframework/http/Status.java320
1 files changed, 320 insertions, 0 deletions
diff --git a/simple/simple-http/src/main/java/org/simpleframework/http/Status.java b/simple/simple-http/src/main/java/org/simpleframework/http/Status.java
new file mode 100644
index 0000000..7fa3b6f
--- /dev/null
+++ b/simple/simple-http/src/main/java/org/simpleframework/http/Status.java
@@ -0,0 +1,320 @@
+/*
+ * Status.java February 2008
+ *
+ * Copyright (C) 2008, Niall Gallagher <niallg@users.sf.net>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.simpleframework.http;
+
+/**
+ * The <code>Status</code> enumeration is used to specify status codes
+ * and the descriptions of those status codes. This is a convenience
+ * enumeration that allows users to acquire the descriptions of codes
+ * by simply providing the code. Also if the response state is known
+ * the code and description can be provided to the client.
+ * <p>
+ * The official HTTP status codes are defined in RFC 2616 section 10.
+ * Each set of status codes belongs to a specific family. Each family
+ * describes a specific scenario. Although it is possible to use other
+ * status codes it is recommended that servers restrict their status
+ * code responses to those specified in this enumeration.
+ *
+ * @author Niall Gallagher
+ *
+ * @see org.simpleframework.http.StatusLine
+ */
+public enum Status {
+
+ /**
+ * This is used as an intermediate response to a request.
+ */
+ CONTINUE(100, "Continue"),
+
+ /**
+ * This represents a change in the protocol the client is using.
+ */
+ SWITCHING_PROTOCOLS(101, "Switching Protocols"),
+
+ /**
+ * This represents a successful response of a targeted request.
+ */
+ OK(200, "OK"),
+
+ /**
+ * This is used to signify that a resource was created successfully.
+ */
+ CREATED(201, "Created"),
+
+ /**
+ * This is used to signify that the request has been accepted.
+ */
+ ACCEPTED(202, "Accepted"),
+
+ /**
+ * This represents a response that contains no response content.
+ */
+ NO_CONTENT(204, "No Content"),
+
+ /**
+ * This is used to represent a response that resets the content.
+ */
+ RESET_CONTENT(205, "Reset Content"),
+
+ /**
+ * This is used to represent a response that has partial content.
+ */
+ PARTIAL_CONTENT(206, "Partial Content"),
+
+ /**
+ * This is used to represent a response where there are choices.
+ */
+ MULTIPLE_CHOICES(300, "Multiple Choices"),
+
+ /**
+ * This is used to represent a target resource that has moved.
+ */
+ MOVED_PERMANENTLY(301, "Moved Permanently"),
+
+ /**
+ * This is used to represent a resource that has been found.
+ */
+ FOUND(302, "Found"),
+
+ /**
+ * This is used to tell the client to see another HTTP resource.
+ */
+ SEE_OTHER(303, "See Other"),
+
+ /**
+ * This is used in response to a target that has not been modified.
+ */
+ NOT_MODIFIED(304, "Not Modified"),
+
+ /**
+ * This is used to tell the client that it should use a proxy.
+ */
+ USE_PROXY(305, "Use Proxy"),
+
+ /**
+ * This is used to redirect the client to a resource that has moved.
+ */
+ TEMPORARY_REDIRECT(307, "Temporary Redirect"),
+
+ /**
+ * This is used to tell the client they have send an invalid request.
+ */
+ BAD_REQUEST(400, "Bad Request"),
+
+ /**
+ * This is used to tell the client that authorization is required.
+ */
+ UNAUTHORIZED(401, "Unauthorized"),
+
+ /**
+ * This is used to tell the client that payment is required.
+ */
+ PAYMENT_REQUIRED(402, "Payment Required"),
+
+ /**
+ * This is used to tell the client that the resource is forbidden.
+ */
+ FORBIDDEN(403, "Forbidden"),
+
+ /**
+ * This is used to tell the client that the resource is not found.
+ */
+ NOT_FOUND(404, "Not Found"),
+
+ /**
+ * This is used to tell the client that the method is not allowed.
+ */
+ METHOD_NOT_ALLOWED(405, "Method Not Allowed"),
+
+ /**
+ * This is used to tell the client the request is not acceptable.
+ */
+ NOT_ACCEPTABLE(406, "Not Acceptable"),
+
+ /**
+ * This is used to tell the client that authentication is required.
+ */
+ PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"),
+
+ /**
+ * This is used to tell the client that the request has timed out.
+ */
+ REQUEST_TIMEOUT(408, "Request Timeout"),
+
+ /**
+ * This is used to tell the client that there has been a conflict.
+ */
+ CONFLICT(409, "Conflict"),
+
+ /**
+ * This is used to tell the client that the resource has gone.
+ */
+ GONE(410, "Gone"),
+
+ /**
+ * This is used to tell the client that a request length is needed.
+ */
+ LENGTH_REQUIRED(411, "Length Required"),
+
+ /**
+ * This is used to tell the client that a precondition has failed.
+ */
+ PRECONDITION_FAILED(412, "Precondition Failed"),
+
+ /**
+ * This is used to tell the client that the request body is too big.
+ */
+ REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
+
+ /**
+ * This is used to tell the client that the request URI is too long.
+ */
+ REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"),
+
+ /**
+ * This is used to tell the client that the content type is invalid.
+ */
+ UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
+
+ /**
+ * This is used to tell the client that the range is invalid.
+ */
+ REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested Range Not Satisfiable"),
+
+ /**
+ * This is used to tell the client that the expectation has failed.
+ */
+ EXPECTATION_FAILED(417, "Expectation Failed"),
+
+ /**
+ * This is sent when the request has caused an internal server error.
+ */
+ INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
+
+ /**
+ * This is used to tell the client the resource is not implemented.
+ */
+ NOT_IMPLEMENTED(501, "Not Implemented"),
+
+ /**
+ * This is used to tell the client that the gateway is invalid.
+ */
+ BAD_GATEWAY(502, "Bad Gateway"),
+
+ /**
+ * This is used to tell the client the resource is unavailable.
+ */
+ SERVICE_UNAVAILABLE(503, "Service Unavailable"),
+
+ /**
+ * This is used to tell the client there was a gateway timeout.
+ */
+ GATEWAY_TIMEOUT(504, "Gateway Timeout"),
+
+ /**
+ * This is used to tell the client the request version is invalid.
+ */
+ VERSION_NOT_SUPPORTED(505, "Version Not Supported");
+
+ /**
+ * This is the description of the status this instance represents.
+ */
+ public final String description;
+
+ /**
+ * This is the code for the status that this instance represents.
+ */
+ public final int code;
+
+ /**
+ * Constructor for the <code>Status</code> object. This will create
+ * a status object that is used to represent a response state. It
+ * contains a status code and a description of that code.
+ *
+ * @param code this is the code that is used for this status
+ * @param description this is the description used for the status
+ */
+ private Status(int code, String description) {
+ this.description = description;
+ this.code = code;
+ }
+
+ /**
+ * This is used to acquire the code of the status object. This is
+ * used in the HTTP response message to tell the client what kind
+ * of response this represents. Typically this is used to get a
+ * code for a known response state for convenience.
+ *
+ * @return the code associated by this status instance
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * This is used to provide the status description. The description
+ * is the textual description of the response state. It is used
+ * so that the response can be interpreted and is a required part
+ * of the HTTP response combined with the status code.
+ *
+ * @return the description associated by this status instance
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * This is used to provide the status description. The description
+ * is the textual description of the response state. It is used
+ * so that the response can be interpreted and is a required part
+ * of the HTTP response combined with the status code.
+ *
+ * @param code this is the code to resolve the description for
+ *
+ * @return the description associated by this status code
+ */
+ public static String getDescription(int code) {
+ Status[] list = values();
+
+ for(Status status : list) {
+ if(status.code == code)
+ return status.description;
+ }
+ return "Unknown";
+ }
+
+ /**
+ * This is used to provide the status value. If the specified
+ * code can not be matched this will return the default HTTP/1.1
+ * status code of OK, which may not match the intended status.
+ *
+ * @param code this is the code to resolve the status for
+ *
+ * @return the status value associated by this status code
+ */
+ public static Status getStatus(int code) {
+ Status[] list = values();
+
+ for(Status status : list) {
+ if(status.code == code)
+ return status;
+ }
+ return OK;
+ }
+}