Add Builder for Operations 37/106437/4
authorOleksandrZharov <Oleksandr.Zharov@pantheon.tech>
Fri, 9 Jun 2023 14:35:42 +0000 (16:35 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Mon, 19 Jun 2023 11:43:50 +0000 (11:43 +0000)
Added nested Builder for Operations. It help us to limit usage
of null and increase readability.

JIRA: NETCONF-1050
Change-Id: Iaf931433872b82f0a36ca32847cc9da4baec2a3d
Signed-off-by: OleksandrZharov <Oleksandr.Zharov@pantheon.tech>
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/Operation.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/builder/OperationBuilder.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/mountpoints/MountPointOpenApi.java

index d68d7fc44ad34bf0c44a3258d6343e368cc64271..7ded13abae5782119c93401438efe0a774857b9b 100644 (file)
@@ -15,4 +15,90 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 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) {
+
+    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 ArrayNode tags;
+        private ArrayNode 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 ArrayNode tags) {
+            this.tags = tags;
+            return this;
+        }
+
+        public Builder parameters(final ArrayNode 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);
+        }
+    }
 }
index 1f02d05a76d688315ca051d0a626e19b4fb45c71..faf9691a1f0921f51ec415b44172c623a61ba73a 100644 (file)
@@ -80,8 +80,14 @@ public final class OperationBuilder {
         responses.set(String.valueOf(Response.Status.CREATED.getStatusCode()),
                 buildResponse(Response.Status.CREATED.getReasonPhrase(), Optional.empty()));
 
-        return new Operation(false, tags, parameters, null, null, null, null, requestBody, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .requestBody(requestBody)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     public static Operation buildGet(final DataSchemaNode node, final String moduleName,
@@ -99,8 +105,13 @@ public final class OperationBuilder {
         responses.set(String.valueOf(Response.Status.OK.getStatusCode()),
                 buildResponse(Response.Status.OK.getReasonPhrase(), Optional.of(schema)));
 
-        return new Operation(false, tags, parameters, null, null, null, null, null, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     private static void addQueryParameters(final ArrayNode parameters, final boolean isConfig) {
@@ -138,8 +149,14 @@ public final class OperationBuilder {
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
                 buildResponse("Updated", Optional.empty()));
 
-        return new Operation(false, tags, parameters, null, null, null, null, requestBody, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .requestBody(requestBody)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     public static Operation buildPatch(final String parentName, final String nodeName, final String moduleName,
@@ -157,8 +174,14 @@ public final class OperationBuilder {
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
                 buildResponse("Updated", Optional.empty()));
 
-        return new Operation(false, tags, parameters, null, null, null, null, requestBody, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .requestBody(requestBody)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     public static Operation buildDelete(final DataSchemaNode node, final String moduleName,
@@ -173,8 +196,13 @@ public final class OperationBuilder {
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
                 buildResponse("Deleted", Optional.empty()));
 
-        return new Operation(false, tags, parameters, null, null, null, null, null, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     public static Operation buildPostOperation(final OperationDefinition operDef, final String moduleName,
@@ -236,8 +264,14 @@ public final class OperationBuilder {
         }
         final String desc = operDef.getDescription().orElse("");
         final ArrayNode tags = buildTagsValue(deviceName, moduleName);
-        return new Operation(false, tags, parameters, null, null, null, null, requestBody, responses, desc,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .parameters(parameters)
+            .requestBody(requestBody)
+            .responses(responses)
+            .description(desc)
+            .summary(summary)
+            .build();
     }
 
     private static ObjectNode createRequestBodyParameter(final String defName, final String xmlDefName,
index 2106a66634a4c2bc6205a85ea694e6c4498353cc..30202332530b8133a7470af1c04ca037b1d91ab3 100644 (file)
@@ -218,8 +218,12 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
         okResponse.put(DESCRIPTION_KEY, Response.Status.OK.getReasonPhrase());
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         responses.set(String.valueOf(Response.Status.OK.getStatusCode()), okResponse);
-        return new Operation(false, tags, null, null, null, null, null, null, responses, description,
-            null, summary);
+        return new Operation.Builder()
+            .tags(tags)
+            .responses(responses)
+            .description(description)
+            .summary(summary)
+            .build();
     }
 
     @Override