Skip to content

Commit 5dfc4b1

Browse files
authored
Merge pull request #7 from adarshsharma/adarsh_master
Removed ChangedEndpoint as it's similar to ChangedOperation
2 parents 23bee71 + 730d2c5 commit 5dfc4b1

File tree

9 files changed

+102
-193
lines changed

9 files changed

+102
-193
lines changed

src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class OpenApiDiff {
3636
private OpenAPI newSpecOpenApi;
3737
private List<Endpoint> newEndpoints;
3838
private List<Endpoint> missingEndpoints;
39-
private List<ChangedEndpoint> changedEndpoints;
39+
private List<ChangedOperation> changedOperations;
4040

4141
/**
4242
* compare two openapi doc
@@ -109,30 +109,30 @@ private ChangedOpenApi compare() {
109109
this.newEndpoints = EndpointUtils.convert2EndpointList(pathDiff.getIncreased());
110110
this.missingEndpoints = EndpointUtils.convert2EndpointList(pathDiff.getMissing());
111111

112-
this.changedEndpoints = new ArrayList<>();
112+
this.changedOperations = new ArrayList<>();
113113

114114
List<String> sharedKey = pathDiff.getSharedKey();
115115
for (String pathUrl : sharedKey) {
116116
PathItem oldPath = oldPaths.get(pathUrl);
117117
PathItem newPath = newPaths.get(pathUrl);
118-
ChangedEndpoint changedEndpoint = new ChangedEndpoint(pathUrl, oldPath, newPath);
119118

120119
Map<PathItem.HttpMethod, Operation> oldOperationMap = oldPath.readOperationsMap();
121120
Map<PathItem.HttpMethod, Operation> newOperationMap = newPath.readOperationsMap();
122121
MapKeyDiff<PathItem.HttpMethod, Operation> operationDiff = MapKeyDiff.diff(oldOperationMap,
123122
newOperationMap);
124123
Map<PathItem.HttpMethod, Operation> increasedOperation = operationDiff.getIncreased();
125124
Map<PathItem.HttpMethod, Operation> missingOperation = operationDiff.getMissing();
126-
changedEndpoint.setNewOperations(increasedOperation);
127-
changedEndpoint.setMissingOperations(missingOperation);
125+
126+
this.newEndpoints.addAll(EndpointUtils.convert2Endpoints(pathUrl, increasedOperation));
127+
this.missingEndpoints.addAll(EndpointUtils.convert2Endpoints(pathUrl, missingOperation));
128128

129129
List<PathItem.HttpMethod> sharedMethods = operationDiff.getSharedKey();
130-
Map<PathItem.HttpMethod, ChangedOperation> operas = new HashMap<>();
130+
131131
ChangedOperation changedOperation;
132132
for (PathItem.HttpMethod method : sharedMethods) {
133133
Operation oldOperation = oldOperationMap.get(method);
134134
Operation newOperation = newOperationMap.get(method);
135-
changedOperation = new ChangedOperation(oldOperation, newOperation);
135+
changedOperation = new ChangedOperation(pathUrl, method, oldOperation, newOperation);
136136
changedOperation.setSummary(newOperation.getSummary());
137137
changedOperation.setDeprecated(!Boolean.TRUE.equals(oldOperation.getDeprecated()) && Boolean.TRUE.equals(newOperation.getDeprecated()));
138138

@@ -175,19 +175,10 @@ private ChangedOpenApi compare() {
175175
changedApiResponse.setChangedResponses(resps);
176176

177177
if (changedOperation.isDiff()) {
178-
operas.put(method, changedOperation);
178+
changedOperations.add(changedOperation);
179179
}
180180
}
181-
changedEndpoint.setChangedOperations(operas);
182181

183-
this.newEndpoints.addAll(EndpointUtils.convert2EndpointList(changedEndpoint.getPathUrl(),
184-
changedEndpoint.getNewOperations()));
185-
this.missingEndpoints.addAll(EndpointUtils.convert2EndpointList(changedEndpoint.getPathUrl(),
186-
changedEndpoint.getMissingOperations()));
187-
188-
if (changedEndpoint.isDiff()) {
189-
changedEndpoints.add(changedEndpoint);
190-
}
191182
}
192183

193184
return getChangedOpenApi();
@@ -198,7 +189,7 @@ private ChangedOpenApi getChangedOpenApi() {
198189
changedOpenApi.setNewEndpoints(newEndpoints);
199190
changedOpenApi.setNewSpecOpenApi(newSpecOpenApi);
200191
changedOpenApi.setOldSpecOpenApi(oldSpecOpenApi);
201-
changedOpenApi.setChangedEndpoints(changedEndpoints);
192+
changedOpenApi.setChangedOperations(changedOperations);
202193
return changedOpenApi;
203194
}
204195

@@ -234,8 +225,8 @@ public List<Endpoint> getMissingEndpoints() {
234225
return missingEndpoints;
235226
}
236227

237-
public List<ChangedEndpoint> getChangedEndpoints() {
238-
return changedEndpoints;
228+
public List<ChangedOperation> getChangedOperations() {
229+
return changedOperations;
239230
}
240231

241232
}

src/main/java/com/qdesrame/openapi/diff/model/ChangedEndpoint.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

src/main/java/com/qdesrame/openapi/diff/model/ChangedOpenApi.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.qdesrame.openapi.diff.utils.EndpointUtils;
44
import io.swagger.v3.oas.models.OpenAPI;
55

6-
import java.util.ArrayList;
76
import java.util.List;
7+
import java.util.stream.Collectors;
88

99
/**
1010
* Created by adarsh.sharma on 22/12/17.
@@ -15,7 +15,7 @@ public class ChangedOpenApi implements Changed {
1515

1616
private List<Endpoint> newEndpoints;
1717
private List<Endpoint> missingEndpoints;
18-
private List<ChangedEndpoint> changedEndpoints;
18+
private List<ChangedOperation> changedOperations;
1919

2020
public OpenAPI getOldSpecOpenApi() {
2121
return oldSpecOpenApi;
@@ -50,29 +50,30 @@ public void setMissingEndpoints(List<Endpoint> missingEndpoints) {
5050
}
5151

5252
public List<Endpoint> getDeprecatedEndpoints() {
53-
return changedEndpoints.stream()
54-
.map(c -> EndpointUtils.convert2EndpointList(c.getPathUrl(), c.getDeprecatedOperations()))
55-
.collect(ArrayList::new, List::addAll, List::addAll);
53+
return changedOperations.stream()
54+
.filter(c -> c.isDeprecated())
55+
.map(c -> EndpointUtils.convert2Endpoint(c.getPathUrl(), c.getHttpMethod(), c.getNewOperation()))
56+
.collect(Collectors.toList());
5657
}
5758

58-
public List<ChangedEndpoint> getChangedEndpoints() {
59-
return changedEndpoints;
59+
public List<ChangedOperation> getChangedOperations() {
60+
return changedOperations;
6061
}
6162

62-
public void setChangedEndpoints(List<ChangedEndpoint> changedEndpoints) {
63-
this.changedEndpoints = changedEndpoints;
63+
public void setChangedOperations(List<ChangedOperation> changedOperations) {
64+
this.changedOperations = changedOperations;
6465
}
6566

6667
@Override
6768
public boolean isDiff() {
6869
return newEndpoints.size() > 0
6970
|| missingEndpoints.size() > 0
70-
|| changedEndpoints.size() > 0;
71+
|| changedOperations.size() > 0;
7172
}
7273

7374
public boolean isDiffBackwardCompatible() {
7475
return missingEndpoints.size() == 0
75-
&& changedEndpoints.stream().allMatch(c -> c.isDiffBackwardCompatible());
76+
&& changedOperations.stream().allMatch(c -> c.isDiffBackwardCompatible());
7677
}
7778

7879
}

src/main/java/com/qdesrame/openapi/diff/model/ChangedOperation.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.qdesrame.openapi.diff.model;
22

33
import io.swagger.v3.oas.models.Operation;
4+
import io.swagger.v3.oas.models.PathItem;
5+
46

57
public class ChangedOperation implements Changed {
68

9+
private String pathUrl;
10+
private PathItem.HttpMethod httpMethod;
711
private Operation oldOperation;
812
private Operation newOperation;
913
private String summary;
@@ -12,11 +16,21 @@ public class ChangedOperation implements Changed {
1216
private ChangedContent requestChangedContent;
1317
private ChangedApiResponse changedApiResponse;
1418

15-
public ChangedOperation(Operation oldOperation, Operation newOperation) {
19+
public ChangedOperation(String pathUrl, PathItem.HttpMethod httpMethod, Operation oldOperation, Operation newOperation) {
20+
this.httpMethod = httpMethod;
21+
this.pathUrl = pathUrl;
1622
this.oldOperation = oldOperation;
1723
this.newOperation = newOperation;
1824
}
1925

26+
public String getPathUrl() {
27+
return pathUrl;
28+
}
29+
30+
public PathItem.HttpMethod getHttpMethod() {
31+
return httpMethod;
32+
}
33+
2034
public Operation getOldOperation() {
2135
return oldOperation;
2236
}

src/main/java/com/qdesrame/openapi/diff/output/HtmlRender.java

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package com.qdesrame.openapi.diff.output;
22

33
import com.qdesrame.openapi.diff.model.*;
4-
import io.swagger.v3.oas.models.PathItem;
54
import io.swagger.v3.oas.models.media.MediaType;
65
import io.swagger.v3.oas.models.parameters.Parameter;
76
import io.swagger.v3.oas.models.responses.ApiResponse;
87
import j2html.tags.ContainerTag;
98

109
import java.util.List;
1110
import java.util.Map;
12-
import java.util.Map.Entry;
1311

1412
import static j2html.TagCreator.*;
1513

@@ -38,8 +36,8 @@ public String render(ChangedOpenApi diff) {
3836
List<Endpoint> deprecatedEndpoints = diff.getDeprecatedEndpoints();
3937
ContainerTag ol_deprecatedEndpoint = ol_deprecatedEndpoint(deprecatedEndpoints);
4038

41-
List<ChangedEndpoint> changedEndpoints = diff.getChangedEndpoints();
42-
ContainerTag ol_changed = ol_changed(changedEndpoints);
39+
List<ChangedOperation> changedOperations = diff.getChangedOperations();
40+
ContainerTag ol_changed = ol_changed(changedOperations);
4341

4442
return renderHtml(ol_newEndpoint, ol_missingEndpoint, ol_deprecatedEndpoint, ol_changed);
4543
}
@@ -114,31 +112,27 @@ private ContainerTag li_deprecatedEndpoint(String method, String path,
114112
del().withText(path)).with(span(" " + desc));
115113
}
116114

117-
private ContainerTag ol_changed(List<ChangedEndpoint> changedEndpoints) {
118-
if (null == changedEndpoints) return ol();
115+
private ContainerTag ol_changed(List<ChangedOperation> changedOperations) {
116+
if (null == changedOperations) return ol();
119117
ContainerTag ol = ol();
120-
for (ChangedEndpoint changedEndpoint : changedEndpoints) {
121-
String pathUrl = changedEndpoint.getPathUrl();
122-
Map<PathItem.HttpMethod, ChangedOperation> changedOperations = changedEndpoint.getChangedOperations();
123-
for (Entry<PathItem.HttpMethod, ChangedOperation> entry : changedOperations.entrySet()) {
124-
String method = entry.getKey().toString();
125-
ChangedOperation changedOperation = entry.getValue();
126-
String desc = changedOperation.getSummary();
127-
128-
ContainerTag ul_detail = ul().withClass("detail");
129-
if (changedOperation.isDiffParam()) {
130-
ul_detail.with(li().with(h3("Parameters")).with(ul_param(changedOperation.getChangedParameters())));
131-
}
132-
if (changedOperation.isDiffRequest()) {
133-
ul_detail.with(li().with(h3("Request")).with(ul_request(changedOperation.getRequestChangedContent())));
134-
} else {
135-
}
136-
if (changedOperation.isDiffResponse()) {
137-
ul_detail.with(li().with(h3("Response")).with(ul_response(changedOperation.getChangedApiResponse())));
138-
}
139-
ol.with(li().with(span(method).withClass(method)).withText(pathUrl + " ").with(span(desc))
140-
.with(ul_detail));
118+
for (ChangedOperation changedOperation : changedOperations) {
119+
String pathUrl = changedOperation.getPathUrl();
120+
String method = changedOperation.getHttpMethod().toString();
121+
String desc = changedOperation.getSummary();
122+
123+
ContainerTag ul_detail = ul().withClass("detail");
124+
if (changedOperation.isDiffParam()) {
125+
ul_detail.with(li().with(h3("Parameters")).with(ul_param(changedOperation.getChangedParameters())));
141126
}
127+
if (changedOperation.isDiffRequest()) {
128+
ul_detail.with(li().with(h3("Request")).with(ul_request(changedOperation.getRequestChangedContent())));
129+
} else {
130+
}
131+
if (changedOperation.isDiffResponse()) {
132+
ul_detail.with(li().with(h3("Response")).with(ul_response(changedOperation.getChangedApiResponse())));
133+
}
134+
ol.with(li().with(span(method).withClass(method)).withText(pathUrl + " ").with(span(desc))
135+
.with(ul_detail));
142136
}
143137
return ol;
144138
}

0 commit comments

Comments
 (0)