org.eclipse.jetty.http.HttpStatus Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
//
// ========================================================================
// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.http;
/**
*
* HttpStatusCode enum class, for status codes based on various HTTP RFCs. (see
* table below)
*
*
*
*
* Enum
* Code
* Message
*
* RFC 1945 - HTTP/1.0
*
* RFC 2616 - HTTP/1.1
*
* RFC 2518 - WEBDAV
*
*
*
* Informational - 1xx
* {@link #isInformational(int)}
*
*
*
* {@link #CONTINUE_100}
* 100
* Continue
*
*
* Sec. 10.1.1
*
*
*
* {@link #SWITCHING_PROTOCOLS_101}
* 101
* Switching Protocols
*
*
* Sec. 10.1.2
*
*
*
* {@link #PROCESSING_102}
* 102
* Processing
*
*
*
* Sec. 10.1
*
*
*
* Success - 2xx
* {@link #isSuccess(int)}
*
*
*
* {@link #OK_200}
* 200
* OK
*
* Sec. 9.2
*
* Sec. 10.2.1
*
*
*
* {@link #CREATED_201}
* 201
* Created
*
* Sec. 9.2
*
* Sec. 10.2.2
*
*
*
* {@link #ACCEPTED_202}
* 202
* Accepted
*
* Sec. 9.2
*
* Sec. 10.2.3
*
*
*
* {@link #NON_AUTHORITATIVE_INFORMATION_203}
* 203
* Non Authoritative Information
*
*
* Sec. 10.2.4
*
*
*
* {@link #NO_CONTENT_204}
* 204
* No Content
*
* Sec. 9.2
*
* Sec. 10.2.5
*
*
*
* {@link #RESET_CONTENT_205}
* 205
* Reset Content
*
*
* Sec. 10.2.6
*
*
*
* {@link #PARTIAL_CONTENT_206}
* 206
* Partial Content
*
*
* Sec. 10.2.7
*
*
*
* {@link #MULTI_STATUS_207}
* 207
* Multi-Status
*
*
*
* Sec. 10.2
*
*
*
* 207
* Partial Update OK
*
*
* draft/01
*
*
*
*
* Redirection - 3xx
* {@link #isRedirection(int)}
*
*
*
* {@link #MULTIPLE_CHOICES_300}
* 300
* Multiple Choices
*
* Sec. 9.3
*
* Sec. 10.3.1
*
*
*
* {@link #MOVED_PERMANENTLY_301}
* 301
* Moved Permanently
*
* Sec. 9.3
*
* Sec. 10.3.2
*
*
*
* {@link #MOVED_TEMPORARILY_302}
* 302
* Moved Temporarily
*
* Sec. 9.3
* (now "302 Found
")
*
*
*
* {@link #FOUND_302}
* 302
* Found
* (was "302 Moved Temporarily
")
*
* Sec. 10.3.3
*
*
*
* {@link #SEE_OTHER_303}
* 303
* See Other
*
*
* Sec. 10.3.4
*
*
*
* {@link #NOT_MODIFIED_304}
* 304
* Not Modified
*
* Sec. 9.3
*
* Sec. 10.3.5
*
*
*
* {@link #USE_PROXY_305}
* 305
* Use Proxy
*
*
* Sec. 10.3.6
*
*
*
*
* 306
* (Unused)
*
*
* Sec. 10.3.7
*
*
*
* {@link #TEMPORARY_REDIRECT_307}
* 307
* Temporary Redirect
*
*
* Sec. 10.3.8
*
*
*
*
* Client Error - 4xx
* {@link #isClientError(int)}
*
*
*
* {@link #BAD_REQUEST_400}
* 400
* Bad Request
*
* Sec. 9.4
*
* Sec. 10.4.1
*
*
*
* {@link #UNAUTHORIZED_401}
* 401
* Unauthorized
*
* Sec. 9.4
*
* Sec. 10.4.2
*
*
*
* {@link #PAYMENT_REQUIRED_402}
* 402
* Payment Required
*
* Sec. 9.4
*
* Sec. 10.4.3
*
*
*
* {@link #FORBIDDEN_403}
* 403
* Forbidden
*
* Sec. 9.4
*
* Sec. 10.4.4
*
*
*
* {@link #NOT_FOUND_404}
* 404
* Not Found
*
* Sec. 9.4
*
* Sec. 10.4.5
*
*
*
* {@link #METHOD_NOT_ALLOWED_405}
* 405
* Method Not Allowed
*
*
* Sec. 10.4.6
*
*
*
* {@link #NOT_ACCEPTABLE_406}
* 406
* Not Acceptable
*
*
* Sec. 10.4.7
*
*
*
* {@link #PROXY_AUTHENTICATION_REQUIRED_407}
* 407
* Proxy Authentication Required
*
*
* Sec. 10.4.8
*
*
*
* {@link #REQUEST_TIMEOUT_408}
* 408
* Request Timeout
*
*
* Sec. 10.4.9
*
*
*
* {@link #CONFLICT_409}
* 409
* Conflict
*
*
* Sec. 10.4.10
*
*
*
*
* {@link #GONE_410}
* 410
* Gone
*
*
* Sec. 10.4.11
*
*
*
*
* {@link #LENGTH_REQUIRED_411}
* 411
* Length Required
*
*
* Sec. 10.4.12
*
*
*
*
* {@link #PRECONDITION_FAILED_412}
* 412
* Precondition Failed
*
*
* Sec. 10.4.13
*
*
*
*
* {@link #REQUEST_ENTITY_TOO_LARGE_413}
* 413
* Request Entity Too Large
*
*
* Sec. 10.4.14
*
*
*
*
* {@link #REQUEST_URI_TOO_LONG_414}
* 414
* Request-URI Too Long
*
*
* Sec. 10.4.15
*
*
*
*
* {@link #UNSUPPORTED_MEDIA_TYPE_415}
* 415
* Unsupported Media Type
*
*
* Sec. 10.4.16
*
*
*
*
* {@link #REQUESTED_RANGE_NOT_SATISFIABLE_416}
* 416
* Requested Range Not Satisfiable
*
*
* Sec. 10.4.17
*
*
*
*
* {@link #EXPECTATION_FAILED_417}
* 417
* Expectation Failed
*
*
* Sec. 10.4.18
*
*
*
*
*
* 418
* Reauthentication Required
*
*
* draft/01
*
*
*
*
* 418
* Unprocessable Entity
*
*
*
* draft/05
*
*
*
* 419
* Proxy Reauthentication Required
*
*
* draft/01
*
*
*
*
* 419
* Insufficient Space on Resource
*
*
*
* draft/05
*
*
*
* 420
* Method Failure
*
*
*
* draft/05
*
*
*
* 421
* (Unused)
*
*
*
*
*
* {@link #UNPROCESSABLE_ENTITY_422}
* 422
* Unprocessable Entity
*
*
*
* Sec. 10.3
*
*
* {@link #LOCKED_423}
* 423
* Locked
*
*
*
* Sec. 10.4
*
*
* {@link #FAILED_DEPENDENCY_424}
* 424
* Failed Dependency
*
*
*
* Sec. 10.5
*
*
*
* Server Error - 5xx
* {@link #isServerError(int)}
*
*
*
* {@link #INTERNAL_SERVER_ERROR_500}
* 500
* Internal Server Error
*
* Sec. 9.5
*
* Sec. 10.5.1
*
*
*
* {@link #NOT_IMPLEMENTED_501}
* 501
* Not Implemented
*
* Sec. 9.5
*
* Sec. 10.5.2
*
*
*
* {@link #BAD_GATEWAY_502}
* 502
* Bad Gateway
*
* Sec. 9.5
*
* Sec. 10.5.3
*
*
*
* {@link #SERVICE_UNAVAILABLE_503}
* 503
* Service Unavailable
*
* Sec. 9.5
*
* Sec. 10.5.4
*
*
*
* {@link #GATEWAY_TIMEOUT_504}
* 504
* Gateway Timeout
*
*
* Sec. 10.5.5
*
*
*
* {@link #HTTP_VERSION_NOT_SUPPORTED_505}
* 505
* HTTP Version Not Supported
*
*
* Sec. 10.5.6
*
*
*
*
* 506
* (Unused)
*
*
*
*
*
* {@link #INSUFFICIENT_STORAGE_507}
* 507
* Insufficient Storage
*
*
*
* Sec. 10.6
*
*
*
*
* @version $Id$
*/
public class HttpStatus
{
public final static int CONTINUE_100 = 100;
public final static int SWITCHING_PROTOCOLS_101 = 101;
public final static int PROCESSING_102 = 102;
public final static int OK_200 = 200;
public final static int CREATED_201 = 201;
public final static int ACCEPTED_202 = 202;
public final static int NON_AUTHORITATIVE_INFORMATION_203 = 203;
public final static int NO_CONTENT_204 = 204;
public final static int RESET_CONTENT_205 = 205;
public final static int PARTIAL_CONTENT_206 = 206;
public final static int MULTI_STATUS_207 = 207;
public final static int MULTIPLE_CHOICES_300 = 300;
public final static int MOVED_PERMANENTLY_301 = 301;
public final static int MOVED_TEMPORARILY_302 = 302;
public final static int FOUND_302 = 302;
public final static int SEE_OTHER_303 = 303;
public final static int NOT_MODIFIED_304 = 304;
public final static int USE_PROXY_305 = 305;
public final static int TEMPORARY_REDIRECT_307 = 307;
public final static int BAD_REQUEST_400 = 400;
public final static int UNAUTHORIZED_401 = 401;
public final static int PAYMENT_REQUIRED_402 = 402;
public final static int FORBIDDEN_403 = 403;
public final static int NOT_FOUND_404 = 404;
public final static int METHOD_NOT_ALLOWED_405 = 405;
public final static int NOT_ACCEPTABLE_406 = 406;
public final static int PROXY_AUTHENTICATION_REQUIRED_407 = 407;
public final static int REQUEST_TIMEOUT_408 = 408;
public final static int CONFLICT_409 = 409;
public final static int GONE_410 = 410;
public final static int LENGTH_REQUIRED_411 = 411;
public final static int PRECONDITION_FAILED_412 = 412;
public final static int REQUEST_ENTITY_TOO_LARGE_413 = 413;
public final static int REQUEST_URI_TOO_LONG_414 = 414;
public final static int UNSUPPORTED_MEDIA_TYPE_415 = 415;
public final static int REQUESTED_RANGE_NOT_SATISFIABLE_416 = 416;
public final static int EXPECTATION_FAILED_417 = 417;
public final static int UNPROCESSABLE_ENTITY_422 = 422;
public final static int LOCKED_423 = 423;
public final static int FAILED_DEPENDENCY_424 = 424;
public final static int INTERNAL_SERVER_ERROR_500 = 500;
public final static int NOT_IMPLEMENTED_501 = 501;
public final static int BAD_GATEWAY_502 = 502;
public final static int SERVICE_UNAVAILABLE_503 = 503;
public final static int GATEWAY_TIMEOUT_504 = 504;
public final static int HTTP_VERSION_NOT_SUPPORTED_505 = 505;
public final static int INSUFFICIENT_STORAGE_507 = 507;
public static final int MAX_CODE = 507;
private static final Code[] codeMap = new Code[MAX_CODE+1];
static
{
for (Code code : Code.values())
{
codeMap[code._code] = code;
}
}
public enum Code
{
/*
* --------------------------------------------------------------------
* Informational messages in 1xx series. As defined by ... RFC 1945 -
* HTTP/1.0 RFC 2616 - HTTP/1.1 RFC 2518 - WebDAV
*/
/** 100 Continue
*/
CONTINUE(CONTINUE_100, "Continue"),
/** 101 Switching Protocols
*/
SWITCHING_PROTOCOLS(SWITCHING_PROTOCOLS_101, "Switching Protocols"),
/** 102 Processing
*/
PROCESSING(PROCESSING_102, "Processing"),
/*
* --------------------------------------------------------------------
* Success messages in 2xx series. As defined by ... RFC 1945 - HTTP/1.0
* RFC 2616 - HTTP/1.1 RFC 2518 - WebDAV
*/
/** 200 OK
*/
OK(OK_200, "OK"),
/** 201 Created
*/
CREATED(CREATED_201, "Created"),
/** 202 Accepted
*/
ACCEPTED(ACCEPTED_202, "Accepted"),
/** 203 Non Authoritative Information
*/
NON_AUTHORITATIVE_INFORMATION(NON_AUTHORITATIVE_INFORMATION_203, "Non Authoritative Information"),
/** 204 No Content
*/
NO_CONTENT(NO_CONTENT_204, "No Content"),
/** 205 Reset Content
*/
RESET_CONTENT(RESET_CONTENT_205, "Reset Content"),
/** 206 Partial Content
*/
PARTIAL_CONTENT(PARTIAL_CONTENT_206, "Partial Content"),
/** 207 Multi-Status
*/
MULTI_STATUS(MULTI_STATUS_207, "Multi-Status"),
/*
* --------------------------------------------------------------------
* Redirection messages in 3xx series. As defined by ... RFC 1945 -
* HTTP/1.0 RFC 2616 - HTTP/1.1
*/
/** 300 Mutliple Choices
*/
MULTIPLE_CHOICES(MULTIPLE_CHOICES_300, "Multiple Choices"),
/** 301 Moved Permanently
*/
MOVED_PERMANENTLY(MOVED_PERMANENTLY_301, "Moved Permanently"),
/** 302 Moved Temporarily
*/
MOVED_TEMPORARILY(MOVED_TEMPORARILY_302, "Moved Temporarily"),
/** 302 Found
*/
FOUND(FOUND_302, "Found"),
/** 303 See Other
*/
SEE_OTHER(SEE_OTHER_303, "See Other"),
/** 304 Not Modified
*/
NOT_MODIFIED(NOT_MODIFIED_304, "Not Modified"),
/** 305 Use Proxy
*/
USE_PROXY(USE_PROXY_305, "Use Proxy"),
/** 307 Temporary Redirect
*/
TEMPORARY_REDIRECT(TEMPORARY_REDIRECT_307, "Temporary Redirect"),
/*
* --------------------------------------------------------------------
* Client Error messages in 4xx series. As defined by ... RFC 1945 -
* HTTP/1.0 RFC 2616 - HTTP/1.1 RFC 2518 - WebDAV
*/
/** 400 Bad Request
*/
BAD_REQUEST(BAD_REQUEST_400, "Bad Request"),
/** 401 Unauthorized
*/
UNAUTHORIZED(UNAUTHORIZED_401, "Unauthorized"),
/** 402 Payment Required
*/
PAYMENT_REQUIRED(PAYMENT_REQUIRED_402, "Payment Required"),
/** 403 Forbidden
*/
FORBIDDEN(FORBIDDEN_403, "Forbidden"),
/** 404 Not Found
*/
NOT_FOUND(NOT_FOUND_404, "Not Found"),
/** 405 Method Not Allowed
*/
METHOD_NOT_ALLOWED(METHOD_NOT_ALLOWED_405, "Method Not Allowed"),
/** 406 Not Acceptable
*/
NOT_ACCEPTABLE(NOT_ACCEPTABLE_406, "Not Acceptable"),
/** 407 Proxy Authentication Required
*/
PROXY_AUTHENTICATION_REQUIRED(PROXY_AUTHENTICATION_REQUIRED_407, "Proxy Authentication Required"),
/** 408 Request Timeout
*/
REQUEST_TIMEOUT(REQUEST_TIMEOUT_408, "Request Timeout"),
/** 409 Conflict
*/
CONFLICT(CONFLICT_409, "Conflict"),
/** 410 Gone
*/
GONE(GONE_410, "Gone"),
/** 411 Length Required
*/
LENGTH_REQUIRED(LENGTH_REQUIRED_411, "Length Required"),
/** 412 Precondition Failed
*/
PRECONDITION_FAILED(PRECONDITION_FAILED_412, "Precondition Failed"),
/** 413 Request Entity Too Large
*/
REQUEST_ENTITY_TOO_LARGE(REQUEST_ENTITY_TOO_LARGE_413, "Request Entity Too Large"),
/** 414 Request-URI Too Long
*/
REQUEST_URI_TOO_LONG(REQUEST_URI_TOO_LONG_414, "Request-URI Too Long"),
/** 415 Unsupported Media Type
*/
UNSUPPORTED_MEDIA_TYPE(UNSUPPORTED_MEDIA_TYPE_415, "Unsupported Media Type"),
/** 416 Requested Range Not Satisfiable
*/
REQUESTED_RANGE_NOT_SATISFIABLE(REQUESTED_RANGE_NOT_SATISFIABLE_416, "Requested Range Not Satisfiable"),
/** 417 Expectation Failed
*/
EXPECTATION_FAILED(EXPECTATION_FAILED_417, "Expectation Failed"),
/** 422 Unprocessable Entity
*/
UNPROCESSABLE_ENTITY(UNPROCESSABLE_ENTITY_422, "Unprocessable Entity"),
/** 423 Locked
*/
LOCKED(LOCKED_423, "Locked"),
/** 424 Failed Dependency
*/
FAILED_DEPENDENCY(FAILED_DEPENDENCY_424, "Failed Dependency"),
/*
* --------------------------------------------------------------------
* Server Error messages in 5xx series. As defined by ... RFC 1945 -
* HTTP/1.0 RFC 2616 - HTTP/1.1 RFC 2518 - WebDAV
*/
/** 500 Server Error
*/
INTERNAL_SERVER_ERROR(INTERNAL_SERVER_ERROR_500, "Server Error"),
/** 501 Not Implemented
*/
NOT_IMPLEMENTED(NOT_IMPLEMENTED_501, "Not Implemented"),
/** 502 Bad Gateway
*/
BAD_GATEWAY(BAD_GATEWAY_502, "Bad Gateway"),
/** 503 Service Unavailable
*/
SERVICE_UNAVAILABLE(SERVICE_UNAVAILABLE_503, "Service Unavailable"),
/** 504 Gateway Timeout
*/
GATEWAY_TIMEOUT(GATEWAY_TIMEOUT_504, "Gateway Timeout"),
/** 505 HTTP Version Not Supported
*/
HTTP_VERSION_NOT_SUPPORTED(HTTP_VERSION_NOT_SUPPORTED_505, "HTTP Version Not Supported"),
/** 507 Insufficient Storage
*/
INSUFFICIENT_STORAGE(INSUFFICIENT_STORAGE_507, "Insufficient Storage");
private final int _code;
private final String _message;
private Code(int code, String message)
{
this._code = code;
_message=message;
}
public int getCode()
{
return _code;
}
public String getMessage()
{
return _message;
}
public boolean equals(int code)
{
return (this._code == code);
}
@Override
public String toString()
{
return String.format("[%03d %s]",this._code,this.getMessage());
}
/**
* Simple test against an code to determine if it falls into the
* Informational
message category as defined in the RFC 1945 - HTTP/1.0,
* and RFC 2616 -
* HTTP/1.1.
*
* @return true if within range of codes that belongs to
* Informational
messages.
*/
public boolean isInformational()
{
return HttpStatus.isInformational(this._code);
}
/**
* Simple test against an code to determine if it falls into the
* Success
message category as defined in the RFC 1945 - HTTP/1.0,
* and RFC 2616 -
* HTTP/1.1.
*
* @return true if within range of codes that belongs to
* Success
messages.
*/
public boolean isSuccess()
{
return HttpStatus.isSuccess(this._code);
}
/**
* Simple test against an code to determine if it falls into the
* Redirection
message category as defined in the RFC 1945 - HTTP/1.0,
* and RFC 2616 -
* HTTP/1.1.
*
* @return true if within range of codes that belongs to
* Redirection
messages.
*/
public boolean isRedirection()
{
return HttpStatus.isRedirection(this._code);
}
/**
* Simple test against an code to determine if it falls into the
* Client Error
message category as defined in the RFC 1945 - HTTP/1.0,
* and RFC 2616 -
* HTTP/1.1.
*
* @return true if within range of codes that belongs to
* Client Error
messages.
*/
public boolean isClientError()
{
return HttpStatus.isClientError(this._code);
}
/**
* Simple test against an code to determine if it falls into the
* Server Error
message category as defined in the RFC 1945 - HTTP/1.0,
* and RFC 2616 -
* HTTP/1.1.
*
* @return true if within range of codes that belongs to
* Server Error
messages.
*/
public boolean isServerError()
{
return HttpStatus.isServerError(this._code);
}
}
/**
* Get the HttpStatusCode for a specific code
*
* @param code
* the code to lookup.
* @return the {@link HttpStatus} if found, or null if not found.
*/
public static Code getCode(int code)
{
if (code <= MAX_CODE)
{
return codeMap[code];
}
return null;
}
/**
* Get the status message for a specific code.
*
* @param code
* the code to look up
* @return the specific message, or the code number itself if code
* does not match known list.
*/
public static String getMessage(int code)
{
Code codeEnum = getCode(code);
if (codeEnum != null)
{
return codeEnum.getMessage();
}
else
{
return Integer.toString(code);
}
}
/**
* Simple test against an code to determine if it falls into the
* Informational
message category as defined in the RFC 1945 - HTTP/1.0, and RFC 2616 - HTTP/1.1.
*
* @param code
* the code to test.
* @return true if within range of codes that belongs to
* Informational
messages.
*/
public static boolean isInformational(int code)
{
return ((100 <= code) && (code <= 199));
}
/**
* Simple test against an code to determine if it falls into the
* Success
message category as defined in the RFC 1945 - HTTP/1.0, and RFC 2616 - HTTP/1.1.
*
* @param code
* the code to test.
* @return true if within range of codes that belongs to
* Success
messages.
*/
public static boolean isSuccess(int code)
{
return ((200 <= code) && (code <= 299));
}
/**
* Simple test against an code to determine if it falls into the
* Redirection
message category as defined in the RFC 1945 - HTTP/1.0, and RFC 2616 - HTTP/1.1.
*
* @param code
* the code to test.
* @return true if within range of codes that belongs to
* Redirection
messages.
*/
public static boolean isRedirection(int code)
{
return ((300 <= code) && (code <= 399));
}
/**
* Simple test against an code to determine if it falls into the
* Client Error
message category as defined in the RFC 1945 - HTTP/1.0, and RFC 2616 - HTTP/1.1.
*
* @param code
* the code to test.
* @return true if within range of codes that belongs to
* Client Error
messages.
*/
public static boolean isClientError(int code)
{
return ((400 <= code) && (code <= 499));
}
/**
* Simple test against an code to determine if it falls into the
* Server Error
message category as defined in the RFC 1945 - HTTP/1.0, and RFC 2616 - HTTP/1.1.
*
* @param code
* the code to test.
* @return true if within range of codes that belongs to
* Server Error
messages.
*/
public static boolean isServerError(int code)
{
return ((500 <= code) && (code <= 599));
}
}