// ======================================================================== // Copyright (c) 2004-2009 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; /* This code is a direct copy of the Jetty 7 HttpStatus class. * I found the naming which includes the number, more useful than the standard constants. */ package org.openjena.fuseki.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 | *
* | * | * 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 * | ** |
* | * | * draft/01 | ** | ||
* | * | * | * draft/05 | *||
* | * | * draft/01 | ** | ||
* | * | * | * draft/05 | *||
* | * | * | * 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 | *
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 HttpSC.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 HttpSC.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 HttpSC.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 HttpSC.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 HttpSC.isServerError(this._code);
}
}
/**
* Get the HttpStatusCode for a specific code
*
* @param code
* the code to lookup.
* @return the {@link HttpSC} if found, or null if not found.
*/
public static Code getCode(int code)
{
if ( code < 0 )
return null ;
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));
}
}