2 * Copyright (c) 2023 PANTHEON.tech s.r.o and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.restconf.openapi.model;
10 import com.fasterxml.jackson.annotation.JsonInclude;
11 import com.fasterxml.jackson.databind.node.ArrayNode;
12 import com.fasterxml.jackson.databind.node.ObjectNode;
14 @JsonInclude(JsonInclude.Include.NON_NULL)
15 public record Operation(boolean deprecated, ArrayNode tags, ArrayNode parameters, ArrayNode security, ArrayNode servers,
16 ObjectNode callbacks, ObjectNode externalDocs, ObjectNode requestBody, ObjectNode responses,
17 String description, String operationId, String summary) {
19 private Operation(final Builder builder) {
20 this(builder.deprecated, builder.tags, builder.parameters, builder.security, builder.servers, builder.callbacks,
21 builder.externalDocs, builder.requestBody, builder.responses, builder.description, builder.operationId,
25 @SuppressWarnings("checkstyle:hiddenField")
26 public static class Builder {
27 private boolean deprecated;
28 private ArrayNode tags;
29 private ArrayNode parameters;
30 private ArrayNode security;
31 private ArrayNode servers;
32 private ObjectNode callbacks;
33 private ObjectNode externalDocs;
34 private ObjectNode requestBody;
35 private ObjectNode responses;
36 private String description;
37 private String operationId;
38 private String summary;
40 public Builder deprecated(final boolean deprecated) {
41 this.deprecated = deprecated;
45 public Builder tags(final ArrayNode tags) {
50 public Builder parameters(final ArrayNode parameters) {
51 this.parameters = parameters;
55 public Builder security(final ArrayNode security) {
56 this.security = security;
60 public Builder servers(final ArrayNode servers) {
61 this.servers = servers;
65 public Builder callbacks(final ObjectNode callbacks) {
66 this.callbacks = callbacks;
70 public Builder externalDocs(final ObjectNode externalDocs) {
71 this.externalDocs = externalDocs;
75 public Builder requestBody(final ObjectNode requestBody) {
76 this.requestBody = requestBody;
80 public Builder responses(final ObjectNode responses) {
81 this.responses = responses;
85 public Builder description(final String description) {
86 this.description = description;
90 public Builder operationId(final String operationId) {
91 this.operationId = operationId;
95 public Builder summary(final String summary) {
96 this.summary = summary;
100 public Operation build() {
101 return new Operation(this);