Use first child in POST payloads
[netconf.git] / restconf / restconf-openapi / src / main / java / org / opendaylight / restconf / openapi / model / Operation.java
index d68d7fc44ad34bf0c44a3258d6343e368cc64271..c161828050cd1747c9fc16c4481e764dc3320388 100644 (file)
@@ -10,9 +10,96 @@ package org.opendaylight.restconf.openapi.model;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.util.List;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public record Operation(boolean deprecated, ArrayNode tags, ArrayNode parameters, ArrayNode security, ArrayNode servers,
-        ObjectNode callbacks, ObjectNode externalDocs, ObjectNode requestBody, ObjectNode responses,
-        String description, String operationId, String summary) {
+public record Operation(boolean deprecated, List<String> tags, List<Parameter> parameters, ArrayNode security,
+        ArrayNode servers, ObjectNode callbacks, ObjectNode externalDocs, ObjectNode requestBody,
+        ObjectNode responses, String description, String operationId, String summary) {
+
+    private Operation(final Builder builder) {
+        this(builder.deprecated, builder.tags, builder.parameters, builder.security, builder.servers, builder.callbacks,
+            builder.externalDocs, builder.requestBody, builder.responses, builder.description, builder.operationId,
+            builder.summary);
+    }
+
+    @SuppressWarnings("checkstyle:hiddenField")
+    public static class Builder {
+        private boolean deprecated;
+        private List<String> tags;
+        private List<Parameter> parameters;
+        private ArrayNode security;
+        private ArrayNode servers;
+        private ObjectNode callbacks;
+        private ObjectNode externalDocs;
+        private ObjectNode requestBody;
+        private ObjectNode responses;
+        private String description;
+        private String operationId;
+        private String summary;
+
+        public Builder deprecated(final boolean deprecated) {
+            this.deprecated = deprecated;
+            return this;
+        }
+
+        public Builder tags(final List<String> tags) {
+            this.tags = tags;
+            return this;
+        }
+
+        public Builder parameters(final List<Parameter> parameters) {
+            this.parameters = parameters;
+            return this;
+        }
+
+        public Builder security(final ArrayNode security) {
+            this.security = security;
+            return this;
+        }
+
+        public Builder servers(final ArrayNode servers) {
+            this.servers = servers;
+            return this;
+        }
+
+        public Builder callbacks(final ObjectNode callbacks) {
+            this.callbacks = callbacks;
+            return this;
+        }
+
+        public Builder externalDocs(final ObjectNode externalDocs) {
+            this.externalDocs = externalDocs;
+            return this;
+        }
+
+        public Builder requestBody(final ObjectNode requestBody) {
+            this.requestBody = requestBody;
+            return this;
+        }
+
+        public Builder responses(final ObjectNode responses) {
+            this.responses = responses;
+            return this;
+        }
+
+        public Builder description(final String description) {
+            this.description = description;
+            return this;
+        }
+
+        public Builder operationId(final String operationId) {
+            this.operationId = operationId;
+            return this;
+        }
+
+        public Builder summary(final String summary) {
+            this.summary = summary;
+            return this;
+        }
+
+        public Operation build() {
+            return new Operation(this);
+        }
+    }
 }