Skip to content

Commit ec81dc3

Browse files
authored
Feature: Add rendering support for operation ID diff (#881)
* Render operation ID changed info * Use safe operation * Implement operation ID diffing in ConsoleRender * Implement ascii rendering * Implement HTML rendering for Operation ID change * Fix rendering in HTML * Null check Format
1 parent ad55b24 commit ec81dc3

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,19 @@
1414
import java.util.Optional;
1515
import org.apache.commons.lang3.StringUtils;
1616
import org.openapitools.openapidiff.core.exception.RendererException;
17-
import org.openapitools.openapidiff.core.model.*;
17+
import org.openapitools.openapidiff.core.model.ChangedApiResponse;
18+
import org.openapitools.openapidiff.core.model.ChangedContent;
19+
import org.openapitools.openapidiff.core.model.ChangedMediaType;
20+
import org.openapitools.openapidiff.core.model.ChangedMetadata;
21+
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
22+
import org.openapitools.openapidiff.core.model.ChangedOperation;
23+
import org.openapitools.openapidiff.core.model.ChangedParameter;
24+
import org.openapitools.openapidiff.core.model.ChangedParameters;
25+
import org.openapitools.openapidiff.core.model.ChangedResponse;
26+
import org.openapitools.openapidiff.core.model.ChangedSchema;
27+
import org.openapitools.openapidiff.core.model.DiffContext;
28+
import org.openapitools.openapidiff.core.model.DiffResult;
29+
import org.openapitools.openapidiff.core.model.Endpoint;
1830
import org.openapitools.openapidiff.core.utils.RefPointer;
1931
import org.openapitools.openapidiff.core.utils.RefType;
2032

@@ -92,6 +104,12 @@ private void ol_changed(
92104

93105
safelyAppend(outputStreamWriter, itemEndpoint(method, pathUrl, desc));
94106
safelyAppend(outputStreamWriter, System.lineSeparator());
107+
if (result(operation.getOperationId()).isDifferent()) {
108+
safelyAppend(outputStreamWriter, "* Operation ID:");
109+
safelyAppend(outputStreamWriter, System.lineSeparator());
110+
safelyAppend(outputStreamWriter, String.format("** Changed %s to %s", operation.getOperationId().getLeft(), operation.getOperationId().getRight()));
111+
safelyAppend(outputStreamWriter, System.lineSeparator());
112+
}
95113
if (result(operation.getParameters()).isDifferent()) {
96114
safelyAppend(outputStreamWriter, "* Parameter:");
97115
safelyAppend(outputStreamWriter, System.lineSeparator());

core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.apache.commons.lang3.StringUtils;
1616
import org.openapitools.openapidiff.core.exception.RendererException;
1717
import org.openapitools.openapidiff.core.model.*;
18+
import org.openapitools.openapidiff.core.model.schema.ChangedOperationId;
1819
import org.openapitools.openapidiff.core.utils.RefPointer;
1920
import org.openapitools.openapidiff.core.utils.RefType;
2021

@@ -79,6 +80,12 @@ private void ol_changed(
7980

8081
safelyAppend(outputStreamWriter, itemEndpoint(method, pathUrl, desc));
8182

83+
if (result(operation.getOperationId()).isDifferent()) {
84+
safelyAppend(outputStreamWriter, StringUtils.repeat(' ', 2));
85+
safelyAppend(outputStreamWriter, "Operation ID:");
86+
safelyAppend(outputStreamWriter, System.lineSeparator());
87+
safelyAppend(outputStreamWriter, ul_operation_id(operation.getOperationId()));
88+
}
8289
if (result(operation.getParameters()).isDifferent()) {
8390
safelyAppend(outputStreamWriter, StringUtils.repeat(' ', 2));
8491
safelyAppend(outputStreamWriter, "Parameter:");
@@ -301,6 +308,10 @@ private String itemEndpoint(String method, String path, String desc) {
301308
return String.format("- %s %s%n", StringUtils.rightPad(method, 6), path);
302309
}
303310

311+
private String ul_operation_id(ChangedOperationId operationId) {
312+
return String.format(" - Changed %s to %s\n", operationId.getLeft(), operationId.getRight());
313+
}
314+
304315
public String renderBody(String ol_new, String ol_miss, String ol_deprec, String ol_changed) {
305316
return ol_new + ol_miss + ol_deprec + ol_changed;
306317
}

core/src/main/java/org/openapitools/openapidiff/core/output/HtmlRender.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import static j2html.TagCreator.meta;
1717
import static j2html.TagCreator.ol;
1818
import static j2html.TagCreator.p;
19+
import static j2html.TagCreator.pre;
1920
import static j2html.TagCreator.span;
2021
import static j2html.TagCreator.title;
2122
import static j2html.TagCreator.ul;
@@ -33,6 +34,7 @@
3334
import j2html.tags.specialized.HtmlTag;
3435
import j2html.tags.specialized.LiTag;
3536
import j2html.tags.specialized.OlTag;
37+
import j2html.tags.specialized.SpanTag;
3638
import j2html.tags.specialized.UlTag;
3739
import java.io.IOException;
3840
import java.io.OutputStreamWriter;
@@ -56,6 +58,7 @@
5658
import org.openapitools.openapidiff.core.model.DiffContext;
5759
import org.openapitools.openapidiff.core.model.DiffResult;
5860
import org.openapitools.openapidiff.core.model.Endpoint;
61+
import org.openapitools.openapidiff.core.model.schema.ChangedOperationId;
5962
import org.openapitools.openapidiff.core.utils.RefPointer;
6063
import org.openapitools.openapidiff.core.utils.RefType;
6164

@@ -202,6 +205,11 @@ private OlTag ol_changed(List<ChangedOperation> changedOperations) {
202205
.orElse("");
203206

204207
UlTag ul_detail = ul().withClass("detail");
208+
if (result(changedOperation.getOperationId()).isDifferent()) {
209+
ul_detail.with(
210+
li().with(h3("Operation ID")).with(ul_operation_id(changedOperation.getOperationId()))
211+
);
212+
}
205213
if (result(changedOperation.getParameters()).isDifferent()) {
206214
ul_detail.with(
207215
li().with(h3("Parameters")).with(ul_param(changedOperation.getParameters())));
@@ -561,4 +569,15 @@ private LiTag li_changedParam(ChangedParameter changeParam) {
561569
}
562570
return li;
563571
}
572+
573+
private UlTag ul_operation_id(ChangedOperationId changedOperationId) {
574+
return ul().withClass("change").with(
575+
li().withText(
576+
"Changed " +
577+
Optional.ofNullable(changedOperationId.getLeft()).orElse("") +
578+
" to " +
579+
Optional.ofNullable(changedOperationId.getRight()).orElse("")
580+
)
581+
);
582+
}
564583
}

core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.openapitools.openapidiff.core.exception.RendererException;
2222
import org.openapitools.openapidiff.core.model.*;
2323
import org.openapitools.openapidiff.core.model.schema.ChangedOneOfSchema;
24+
import org.openapitools.openapidiff.core.model.schema.ChangedOperationId;
2425
import org.openapitools.openapidiff.core.utils.RefPointer;
2526
import org.openapitools.openapidiff.core.utils.RefType;
2627
import org.slf4j.Logger;
@@ -132,6 +133,10 @@ protected void listEndpoints(
132133
operation.getHttpMethod().toString(),
133134
operation.getPathUrl(),
134135
operation.getSummary()));
136+
if (result(operation.getOperationId()).isDifferent()) {
137+
safelyAppend(outputStreamWriter, titleH5("Operation ID:"));
138+
safelyAppend(outputStreamWriter, operationId(operation.getOperationId()));
139+
}
135140
if (result(operation.getParameters()).isDifferent()) {
136141
safelyAppend(outputStreamWriter, titleH5("Parameters:"));
137142
safelyAppend(outputStreamWriter, parameters(operation.getParameters()));
@@ -541,6 +546,10 @@ protected String metadata(String beginning, String name, ChangedMetadata changed
541546
}
542547
}
543548

549+
protected String operationId(ChangedOperationId operationId) {
550+
return String.format("\nChanged: %s to %s\n\n", code(operationId.getLeft()), code(operationId.getRight()));
551+
}
552+
544553
protected String metadata(String metadata) {
545554
return metadata("", metadata);
546555
}

0 commit comments

Comments
 (0)