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