org.simpleframework.http.Status Maven / Gradle / Ivy
Show all versions of simple-http Show documentation
/*
* Status.java February 2008
*
* Copyright (C) 2008, Niall Gallagher
*
* 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 Status
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.
*
* 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 Status
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;
}
}