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();
+ }
+}