bdi.glue.http.common.HttpStatus Maven / Gradle / Ivy
package bdi.glue.http.common;
/**
* Copied from org.springframework.http;
* @author @aloyer
*/
/**
* Java 5 enumeration of HTTP status codes.
*
* The HTTP status code series can be retrieved via {@link #series()}.
*
* @author Arjen Poutsma
* @see HttpStatus.Series
* @see HTTP Status Code Registry
*/
public enum HttpStatus {
// 1xx Informational
/**
* {@code 100 Continue}.
* @see HTTP/1.1
*/
CONTINUE(100),
/**
* {@code 101 Switching Protocols}.
* @see HTTP/1.1
*/
SWITCHING_PROTOCOLS(101),
/**
* {@code 102 Processing}.
* @see WebDAV
*/
PROCESSING(102),
// 2xx Success
/**
* {@code 200 OK}.
* @see HTTP/1.1
*/
OK(200),
/**
* {@code 201 Created}.
* @see HTTP/1.1
*/
CREATED(201),
/**
* {@code 202 Accepted}.
* @see HTTP/1.1
*/
ACCEPTED(202),
/**
* {@code 203 Non-Authoritative Information}.
* @see HTTP/1.1
*/
NON_AUTHORITATIVE_INFORMATION(203),
/**
* {@code 204 No Content}.
* @see HTTP/1.1
*/
NO_CONTENT(204),
/**
* {@code 205 Reset Content}.
* @see HTTP/1.1
*/
RESET_CONTENT(205),
/**
* {@code 206 Partial Content}.
* @see HTTP/1.1
*/
PARTIAL_CONTENT(206),
/**
* {@code 207 Multi-Status}.
* @see WebDAV
*/
MULTI_STATUS(207),
/**
* {@code 208 Already Reported}.
* @see WebDAV Binding Extensions
*/
ALREADY_REPORTED(208),
/**
* {@code 226 IM Used}.
* @see Delta encoding in HTTP
*/
IM_USED(226),
// 3xx Redirection
/**
* {@code 300 Multiple Choices}.
* @see HTTP/1.1
*/
MULTIPLE_CHOICES(300),
/**
* {@code 301 Moved Permanently}.
* @see HTTP/1.1
*/
MOVED_PERMANENTLY(301),
/**
* {@code 302 Found}.
* @see HTTP/1.1
*/
FOUND(302),
/**
* {@code 302 Moved Temporarily}.
* @see HTTP/1.0
*/
MOVED_TEMPORARILY(302),
/**
* {@code 303 See Other}.
* @see HTTP/1.1
*/
SEE_OTHER(303),
/**
* {@code 304 Not Modified}.
* @see HTTP/1.1
*/
NOT_MODIFIED(304),
/**
* {@code 305 Use Proxy}.
* @see HTTP/1.1
*/
USE_PROXY(305),
/**
* {@code 307 Temporary Redirect}.
* @see HTTP/1.1
*/
TEMPORARY_REDIRECT(307),
// --- 4xx Client Error ---
/**
* {@code 400 Bad Request}.
* @see HTTP/1.1
*/
BAD_REQUEST(400),
/**
* {@code 401 Unauthorized}.
* @see HTTP/1.1
*/
UNAUTHORIZED(401),
/**
* {@code 402 Payment Required}.
* @see HTTP/1.1
*/
PAYMENT_REQUIRED(402),
/**
* {@code 403 Forbidden}.
* @see HTTP/1.1
*/
FORBIDDEN(403),
/**
* {@code 404 Not Found}.
* @see HTTP/1.1
*/
NOT_FOUND(404),
/**
* {@code 405 Method Not Allowed}.
* @see HTTP/1.1
*/
METHOD_NOT_ALLOWED(405),
/**
* {@code 406 Not Acceptable}.
* @see HTTP/1.1
*/
NOT_ACCEPTABLE(406),
/**
* {@code 407 Proxy Authentication Required}.
* @see HTTP/1.1
*/
PROXY_AUTHENTICATION_REQUIRED(407),
/**
* {@code 408 Request Timeout}.
* @see HTTP/1.1
*/
REQUEST_TIMEOUT(408),
/**
* {@code 409 Conflict}.
* @see HTTP/1.1
*/
CONFLICT(409),
/**
* {@code 410 Gone}.
* @see HTTP/1.1
*/
GONE(410),
/**
* {@code 411 Length Required}.
* @see HTTP/1.1
*/
LENGTH_REQUIRED(411),
/**
* {@code 412 Precondition failed}.
* @see HTTP/1.1
*/
PRECONDITION_FAILED(412),
/**
* {@code 413 Request Entity Too Large}.
* @see HTTP/1.1
*/
REQUEST_ENTITY_TOO_LARGE(413),
/**
* {@code 414 Request-URI Too Long}.
* @see HTTP/1.1
*/
REQUEST_URI_TOO_LONG(414),
/**
* {@code 415 Unsupported Media Type}.
* @see HTTP/1.1
*/
UNSUPPORTED_MEDIA_TYPE(415),
/**
* {@code 416 Requested Range Not Satisfiable}.
* @see HTTP/1.1
*/
REQUESTED_RANGE_NOT_SATISFIABLE(416),
/**
* {@code 417 Expectation Failed}.
* @see HTTP/1.1
*/
EXPECTATION_FAILED(417),
/**
* {@code 419 Insufficient Space on Resource}.
* @see WebDAV Draft
*/
INSUFFICIENT_SPACE_ON_RESOURCE(419),
/**
* {@code 420 Method Failure}.
* @see WebDAV Draft
*/
METHOD_FAILURE(420),
/**
* {@code 421 Destination Locked}.
* @see WebDAV Draft
*/
DESTINATION_LOCKED(421),
/**
* {@code 422 Unprocessable Entity}.
* @see WebDAV
*/
UNPROCESSABLE_ENTITY(422),
/**
* {@code 423 Locked}.
* @see WebDAV
*/
LOCKED(423),
/**
* {@code 424 Failed Dependency}.
* @see WebDAV
*/
FAILED_DEPENDENCY(424),
/**
* {@code 426 Upgrade Required}.
* @see Upgrading to TLS Within HTTP/1.1
*/
UPGRADE_REQUIRED(426),
// --- 5xx Server Error ---
/**
* {@code 500 Internal Server Error}.
* @see HTTP/1.1
*/
INTERNAL_SERVER_ERROR(500),
/**
* {@code 501 Not Implemented}.
* @see HTTP/1.1
*/
NOT_IMPLEMENTED(501),
/**
* {@code 502 Bad Gateway}.
* @see HTTP/1.1
*/
BAD_GATEWAY(502),
/**
* {@code 503 Service Unavailable}.
* @see HTTP/1.1
*/
SERVICE_UNAVAILABLE(503),
/**
* {@code 504 Gateway Timeout}.
* @see HTTP/1.1
*/
GATEWAY_TIMEOUT(504),
/**
* {@code 505 HTTP Version Not Supported}.
* @see HTTP/1.1
*/
HTTP_VERSION_NOT_SUPPORTED(505),
/**
* {@code 506 Variant Also Negotiates}
* @see Transparent Content Negotiation
*/
VARIANT_ALSO_NEGOTIATES(506),
/**
* {@code 507 Insufficient Storage}
* @see WebDAV
*/
INSUFFICIENT_STORAGE(507),
/**
* {@code 508 Loop Detected}
* @see WebDAV Binding Extensions
*/
LOOP_DETECTED(508),
/**
* {@code 510 Not Extended}
* @see HTTP Extension Framework
*/
NOT_EXTENDED(510);
private final int value;
private HttpStatus(int value) {
this.value = value;
}
/**
* Return the integer value of this status code.
* @return http code
*/
public int value() {
return this.value;
}
/**
* Returns the HTTP status series of this status code.
*
* @return Http series the code belongs to
* @see HttpStatus.Series
*/
public Series series() {
return Series.valueOf(this);
}
/**
* @return a string representation of this status code.
*/
@Override
public String toString() {
return Integer.toString(value);
}
/**
* Return the enum constant of this type with the specified numeric value.
* @param statusCode the numeric value of the enum to be returned
* @return the enum constant with the specified numeric value
* @throws IllegalArgumentException if this enum has no constant for the specified numeric value
*/
public static HttpStatus valueOf(int statusCode) {
for (HttpStatus status : values()) {
if (status.value == statusCode) {
return status;
}
}
throw new IllegalArgumentException("No matching constant for [" + statusCode + "]");
}
/**
* Java 5 enumeration of HTTP status series.
*
Retrievable via {@link HttpStatus#series()}.
*/
public static enum Series {
INFORMATIONAL(1),
SUCCESSFUL(2),
REDIRECTION(3),
CLIENT_ERROR(4),
SERVER_ERROR(5);
private final int value;
private Series(int value) {
this.value = value;
}
/**
* Return the integer value of this status series. Ranges from 1 to 5.
* @return Series code
*/
public int value() {
return this.value;
}
private static Series valueOf(HttpStatus status) {
int seriesCode = status.value() / 100;
for (Series series : values()) {
if (series.value == seriesCode) {
return series;
}
}
throw new IllegalArgumentException("No matching constant for [" + status + "]");
}
}
}