X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=protocol%2Frestconf-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fapi%2FHttpStatusCode.java;fp=protocol%2Frestconf-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fapi%2FHttpStatusCode.java;h=3cc08840a7b685d48ed1892cf2e45a377d7bbe32;hb=4e2e5beb0ab9fa93b74ea1ce97969cf15257630f;hp=0000000000000000000000000000000000000000;hpb=2bb148284126ce63c972814689bd3da46c5cd348;p=netconf.git diff --git a/protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/HttpStatusCode.java b/protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/HttpStatusCode.java new file mode 100644 index 0000000000..3cc08840a7 --- /dev/null +++ b/protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/HttpStatusCode.java @@ -0,0 +1,265 @@ +/* + * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.restconf.api; + +import com.google.common.annotations.Beta; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +/** + * A simple DTO definitiong an HTTP Status Code. Integer + * values used here are assigned through the + * IANA Status Code Registry. + */ +@Beta +@NonNullByDefault +public final class HttpStatusCode { + /** + * 200 OK. + */ + public static final HttpStatusCode OK = new HttpStatusCode(200, "OK"); + /** + * 201 Created. + */ + public static final HttpStatusCode CREATED = new HttpStatusCode(201, "Created"); + /** + * 202 Accepted. + */ + public static final HttpStatusCode ACCEPTED = new HttpStatusCode(202, "Accepted"); + /** + * 203 Non-Authoritative Information. + */ + public static final HttpStatusCode NON_AUTHORITATIVE_INFORMATION = + new HttpStatusCode(203, "Non-Authoritative Information"); + /** + * 204 No Content. + */ + public static final HttpStatusCode NO_CONTENT = new HttpStatusCode(204, "No Content"); + /** + * 205 Reset Content. + */ + public static final HttpStatusCode RESET_CONTENT = new HttpStatusCode(205, "Reset Content"); + /** + * 206 Partial Content. + */ + public static final HttpStatusCode PARTIAL_CONTENT = new HttpStatusCode(206, "Partial Content"); + /** + * 300 Multiple Choices. + */ + public static final HttpStatusCode MULTIPLE_CHOICES = new HttpStatusCode(300, "Multiple Choices"); + /** + * 301 Moved Permanently. + */ + public static final HttpStatusCode MOVED_PERMANENTLY = new HttpStatusCode(301, "Moved Permanently"); + /** + * 302 Found. + */ + public static final HttpStatusCode FOUND = new HttpStatusCode(302, "Found"); + /** + * 303 See Other. + */ + public static final HttpStatusCode SEE_OTHER = new HttpStatusCode(303, "See Other"); + /** + * 304 Not Modified. + */ + public static final HttpStatusCode NOT_MODIFIED = new HttpStatusCode(304, "Not Modified"); + /** + * 305 Use Proxy. + */ + public static final HttpStatusCode USE_PROXY = new HttpStatusCode(305, "Use Proxy"); + /** + * 307 Temporary Redirect. + */ + public static final HttpStatusCode TEMPORARY_REDIRECT = new HttpStatusCode(307, "Temporary Redirect"); + /** + * 308 Permanent Redirect. + */ + public static final HttpStatusCode PERMANENT_REDIRECT = new HttpStatusCode(308, "Permanent Redirect"); + /** + * 400 Bad Request. + */ + public static final HttpStatusCode BAD_REQUEST = new HttpStatusCode(400, "Bad Request"); + /** + * 401 Unauthorized. + */ + public static final HttpStatusCode UNAUTHORIZED = new HttpStatusCode(401, "Unauthorized"); + /** + * 402 Payment Required. + */ + public static final HttpStatusCode PAYMENT_REQUIRED = new HttpStatusCode(402, "Payment Required"); + /** + * 403 Forbidden. + */ + public static final HttpStatusCode FORBIDDEN = new HttpStatusCode(403, "Forbidden"); + /** + * 404 Not Found. + */ + public static final HttpStatusCode NOT_FOUND = new HttpStatusCode(404, "Not Found"); + /** + * 405 Method Not Allowed. + */ + public static final HttpStatusCode METHOD_NOT_ALLOWED = new HttpStatusCode(405, "Method Not Allowed"); + /** + * 406 Not Acceptable. + */ + public static final HttpStatusCode NOT_ACCEPTABLE = new HttpStatusCode(406, "Not Acceptable"); + /** + * 407 Proxy Authentication Required. + */ + public static final HttpStatusCode PROXY_AUTHENTICATION_REQUIRED = + new HttpStatusCode(407, "Proxy Authentication Required"); + /** + * 408 Request Timeout. + */ + public static final HttpStatusCode REQUEST_TIMEOUT = new HttpStatusCode(408, "Request Timeout"); + /** + * 409 Conflict. + */ + public static final HttpStatusCode CONFLICT = new HttpStatusCode(409, "Conflict"); + /** + * 410 Gone. + */ + public static final HttpStatusCode GONE = new HttpStatusCode(410, "Gone"); + /** + * 411 Length Required. + */ + public static final HttpStatusCode LENGTH_REQUIRED = new HttpStatusCode(411, "Length Required"); + /** + * 412 Precondition Failed. + */ + public static final HttpStatusCode PRECONDITION_FAILED = new HttpStatusCode(412, "Precondition Failed"); + /** + * 413 Content Too Large. + */ + public static final HttpStatusCode CONTENT_TOO_LARGE = new HttpStatusCode(413, "Content Too Large"); + /** + * 414 Content Too Long. + */ + public static final HttpStatusCode URI_TOO_LONG = new HttpStatusCode(414, "URI Too Long"); + /** + * 415 Unsupported Media Type. + */ + public static final HttpStatusCode UNSUPPORTED_MEDIA_TYPE = new HttpStatusCode(415, "Unsupported Media Type"); + /** + * 416 Requested Range Not Satisfiable. + */ + public static final HttpStatusCode REQUESTED_RANGE_NOT_SATISFIABLE = + new HttpStatusCode(416, "Requested Range Not Satisfiable"); + /** + * 417 Expectation Failed. + */ + public static final HttpStatusCode EXPECTATION_FAILED = new HttpStatusCode(417, "Expectation Failed"); + /** + * 418 (Unused). + */ + @Deprecated(forRemoval = true) + public static final HttpStatusCode I_M_A_TEAPOT = new HttpStatusCode(418, "I'm a teapot"); + /** + * 421 Misdirected Request. + */ + public static final HttpStatusCode MISDIRECTED_REQUEST = new HttpStatusCode(421, "Misdirected Request"); + /** + * 422 Unprocessable Content. + */ + public static final HttpStatusCode UNPROCESSABLE_CONTENT = new HttpStatusCode(422, "Unprocessable Content"); + /** + * 426 Upgrade Required. + */ + public static final HttpStatusCode UPGRADE_REQUIRED = new HttpStatusCode(426, "Upgrade Required"); + /** + * 428 Precondition Required. + */ + public static final HttpStatusCode PRECONDITION_REQUIRED = new HttpStatusCode(428, "Precondition Required"); + /** + * 429 Too Many Requests. + */ + public static final HttpStatusCode TOO_MANY_REQUESTS = new HttpStatusCode(429, "Too Many Requests"); + /** + * 431 Request Header Fields Too Large. + */ + public static final HttpStatusCode REQUEST_HEADER_FIELDS_TOO_LARGE = + new HttpStatusCode(431, "Request Header Fields Too Large"); + /** + * 500 Internal Server Error. + */ + public static final HttpStatusCode INTERNAL_SERVER_ERROR = new HttpStatusCode(500, "Internal Server Error"); + /** + * 501 Not Implemented. + */ + public static final HttpStatusCode NOT_IMPLEMENTED = new HttpStatusCode(501, "Not Implemented"); + /** + * 502 Bad Gateway. + */ + public static final HttpStatusCode BAD_GATEWAY = new HttpStatusCode(502, "Bad Gateway"); + /** + * 503 Service Unavailable. + */ + public static final HttpStatusCode SERVICE_UNAVAILABLE = new HttpStatusCode(503, "Service Unavailable"); + /** + * 504 Gateway Timeout. + */ + public static final HttpStatusCode GATEWAY_TIMEOUT = new HttpStatusCode(504, "Gateway Timeout"); + /** + * 505 HTTP Version Not Supported. + */ + public static final HttpStatusCode HTTP_VERSION_NOT_SUPPORTED = + new HttpStatusCode(505, "HTTP Version Not Supported"); + /** + * 511 Network Authentication Required. + */ + public static final HttpStatusCode NETWORK_AUTHENTICATION_REQUIRED = + new HttpStatusCode(511, "Network Authentication Required"); + + private final int code; + private final String phrase; + + public HttpStatusCode(final int code, final @Nullable String phrase) { + if (code < 100 || code > 599) { + throw new IllegalArgumentException("Invalid statusCode " + code); + } + this.code = code; + this.phrase = phrase; + } + + /** + * Returns the HTTP status code, {@code 100-599}. + * + * @return the HTTP status code + */ + public int code() { + return code; + } + + /** + * Returns the phrase or {@code null}. + * + * @return the phrase or {@code null} + */ + public @Nullable String phrase() { + return phrase; + } + + @Override + public int hashCode() { + return code; + } + + @Override + public boolean equals(final @Nullable Object obj) { + return obj == this || obj instanceof HttpStatusCode other && code == other.code; + } + + @Override + public String toString() { + final var sb = new StringBuilder(HttpStatusCode.class.getSimpleName()).append('(').append(code); + if (phrase != null) { + sb.append(' ').append(phrase); + } + return sb.append(')').toString(); + } +}