Skip to content

Commit 638e685

Browse files
committed
refactor: add & use composed changed
1 parent 75a6aee commit 638e685

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+611
-591
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<dependency>
6060
<groupId>io.swagger.parser.v3</groupId>
6161
<artifactId>swagger-parser-v3</artifactId>
62-
<version>2.0.4</version>
62+
<version>2.0.5</version>
6363
</dependency>
6464
<dependency>
6565
<groupId>com.j2html</groupId>

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ public ApiResponseDiff(OpenApiDiff openApiDiff) {
2323
public Optional<ChangedApiResponse> diff(
2424
ApiResponses left, ApiResponses right, DiffContext context) {
2525
MapKeyDiff<String, ApiResponse> responseMapKeyDiff = MapKeyDiff.diff(left, right);
26-
ChangedApiResponse changedApiResponse = new ChangedApiResponse(left, right, context);
27-
changedApiResponse.setAddResponses(responseMapKeyDiff.getIncreased());
28-
changedApiResponse.setMissingResponses(responseMapKeyDiff.getMissing());
2926
List<String> sharedResponseCodes = responseMapKeyDiff.getSharedKey();
3027
Map<String, ChangedResponse> resps = new LinkedHashMap<>();
3128
for (String responseCode : sharedResponseCodes) {
@@ -34,11 +31,15 @@ public Optional<ChangedApiResponse> diff(
3431
.diff(left.get(responseCode), right.get(responseCode), context)
3532
.ifPresent(changedResponse -> resps.put(responseCode, changedResponse));
3633
}
37-
changedApiResponse.setChangedResponses(resps);
34+
ChangedApiResponse changedApiResponse =
35+
new ChangedApiResponse(left, right, context)
36+
.setIncreased(responseMapKeyDiff.getIncreased())
37+
.setMissing(responseMapKeyDiff.getMissing())
38+
.setChanged(resps);
3839
openApiDiff
3940
.getExtensionsDiff()
4041
.diff(left.getExtensions(), right.getExtensions(), context)
41-
.ifPresent(changedApiResponse::setChangedExtensions);
42+
.ifPresent(changedApiResponse::setExtensions);
4243
return isChanged(changedApiResponse);
4344
}
4445
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,8 @@ public boolean compare(Content left, Content right) {
2424
}
2525

2626
public Optional<ChangedContent> diff(Content left, Content right, DiffContext context) {
27-
ChangedContent changedContent = new ChangedContent(left, right, context);
2827

2928
MapKeyDiff<String, MediaType> mediaTypeDiff = MapKeyDiff.diff(left, right);
30-
changedContent.setIncreased(mediaTypeDiff.getIncreased());
31-
changedContent.setMissing(mediaTypeDiff.getMissing());
3229
List<String> sharedMediaTypes = mediaTypeDiff.getSharedKey();
3330
Map<String, ChangedMediaType> changedMediaTypes = new LinkedHashMap<>();
3431
for (String mediaTypeKey : sharedMediaTypes) {
@@ -43,12 +40,15 @@ public Optional<ChangedContent> diff(Content left, Content right, DiffContext co
4340
oldMediaType.getSchema(),
4441
newMediaType.getSchema(),
4542
context.copyWithRequired(true))
46-
.ifPresent(changedMediaType::setChangedSchema);
43+
.ifPresent(changedMediaType::setSchema);
4744
if (!isUnchanged(changedMediaType)) {
4845
changedMediaTypes.put(mediaTypeKey, changedMediaType);
4946
}
5047
}
51-
changedContent.setChanged(changedMediaTypes);
52-
return isChanged(changedContent);
48+
return isChanged(
49+
new ChangedContent(left, right, context)
50+
.setIncreased(mediaTypeDiff.getIncreased())
51+
.setMissing(mediaTypeDiff.getMissing())
52+
.setChanged(changedMediaTypes));
5353
}
5454
}

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

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
/** Created by adarsh.sharma on 28/12/17. */
1616
public class HeaderDiff extends ReferenceDiffCache<Header, ChangedHeader> {
17+
private static RefPointer<Header> refPointer = new RefPointer<>(RefType.HEADERS);
1718
private OpenApiDiff openApiDiff;
1819
private Components leftComponents;
1920
private Components rightComponents;
20-
private static RefPointer<Header> refPointer = new RefPointer<>(RefType.HEADERS);
2121

2222
public HeaderDiff(OpenApiDiff openApiDiff) {
2323
this.openApiDiff = openApiDiff;
@@ -41,27 +41,30 @@ protected Optional<ChangedHeader> computeDiff(
4141
left = refPointer.resolveRef(leftComponents, left, left.get$ref());
4242
right = refPointer.resolveRef(rightComponents, right, right.get$ref());
4343

44-
ChangedHeader changedHeader = new ChangedHeader(left, right, context);
45-
46-
changedHeader.setChangeDescription(
47-
!Objects.equals(left.getDescription(), right.getDescription()));
48-
changedHeader.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()));
49-
changedHeader.setChangeDeprecated(
50-
!Boolean.TRUE.equals(left.getDeprecated()) && Boolean.TRUE.equals(right.getDeprecated()));
51-
changedHeader.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()));
52-
changedHeader.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
44+
ChangedHeader changedHeader =
45+
new ChangedHeader(left, right, context)
46+
.setRequired(getBooleanDiff(left.getRequired(), right.getRequired()))
47+
.setDeprecated(
48+
!Boolean.TRUE.equals(left.getDeprecated())
49+
&& Boolean.TRUE.equals(right.getDeprecated()))
50+
.setStyle(!Objects.equals(left.getStyle(), right.getStyle()))
51+
.setExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
52+
openApiDiff
53+
.getMetadataDiff()
54+
.diff(left.getDescription(), right.getDescription(), context)
55+
.ifPresent(changedHeader::setDescription);
5356
openApiDiff
5457
.getSchemaDiff()
5558
.diff(new HashSet<>(), left.getSchema(), right.getSchema(), context.copyWithRequired(true))
56-
.ifPresent(changedHeader::setChangedSchema);
59+
.ifPresent(changedHeader::setSchema);
5760
openApiDiff
5861
.getContentDiff()
5962
.diff(left.getContent(), right.getContent(), context)
60-
.ifPresent(changedHeader::setChangedContent);
63+
.ifPresent(changedHeader::setContent);
6164
openApiDiff
6265
.getExtensionsDiff()
6366
.diff(left.getExtensions(), right.getExtensions(), context)
64-
.ifPresent(changedHeader::setChangedExtensions);
67+
.ifPresent(changedHeader::setExtensions);
6568
return isChanged(changedHeader);
6669
}
6770

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ public HeadersDiff(OpenApiDiff openApiDiff) {
2121

2222
public Optional<ChangedHeaders> diff(
2323
Map<String, Header> left, Map<String, Header> right, DiffContext context) {
24-
ChangedHeaders changedHeaders = new ChangedHeaders(left, right, context);
2524
MapKeyDiff<String, Header> headerMapDiff = MapKeyDiff.diff(left, right);
26-
changedHeaders.setIncreased(headerMapDiff.getIncreased());
27-
changedHeaders.setMissing(headerMapDiff.getMissing());
2825
List<String> sharedHeaderKeys = headerMapDiff.getSharedKey();
2926

3027
Map<String, ChangedHeader> changed = new LinkedHashMap<>();
@@ -36,8 +33,10 @@ public Optional<ChangedHeaders> diff(
3633
.diff(oldHeader, newHeader, context)
3734
.ifPresent(changedHeader -> changed.put(headerKey, changedHeader));
3835
}
39-
changedHeaders.setChanged(changed);
40-
41-
return isChanged(changedHeaders);
36+
return isChanged(
37+
new ChangedHeaders(left, right, context)
38+
.setIncreased(headerMapDiff.getIncreased())
39+
.setMissing(headerMapDiff.getMissing())
40+
.setChanged(changed));
4241
}
4342
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,16 @@ private static Map<String, Object> getExtensions(OAuthFlow oAuthFlow) {
2424
public Optional<ChangedOAuthFlow> diff(OAuthFlow left, OAuthFlow right) {
2525
ChangedOAuthFlow changedOAuthFlow = new ChangedOAuthFlow(left, right);
2626
if (left != null && right != null) {
27-
changedOAuthFlow.setChangedAuthorizationUrl(
28-
!Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()));
29-
changedOAuthFlow.setChangedTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()));
30-
changedOAuthFlow.setChangedRefreshUrl(
31-
!Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
27+
changedOAuthFlow
28+
.setAuthorizationUrl(
29+
!Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()))
30+
.setTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()))
31+
.setRefreshUrl(!Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
3232
}
3333
openApiDiff
3434
.getExtensionsDiff()
3535
.diff(getExtensions(left), getExtensions(right))
36-
.ifPresent(changedOAuthFlow::setChangedExtensions);
36+
.ifPresent(changedOAuthFlow::setExtensions);
3737
return isChanged(changedOAuthFlow);
3838
}
3939
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,24 @@ public Optional<ChangedOAuthFlows> diff(OAuthFlows left, OAuthFlows right) {
2626
openApiDiff
2727
.getOAuthFlowDiff()
2828
.diff(left.getImplicit(), right.getImplicit())
29-
.ifPresent(changedOAuthFlows::setChangedImplicitOAuthFlow);
29+
.ifPresent(changedOAuthFlows::setImplicitOAuthFlow);
3030
openApiDiff
3131
.getOAuthFlowDiff()
3232
.diff(left.getPassword(), right.getPassword())
33-
.ifPresent(changedOAuthFlows::setChangedPasswordOAuthFlow);
33+
.ifPresent(changedOAuthFlows::setPasswordOAuthFlow);
3434
openApiDiff
3535
.getOAuthFlowDiff()
3636
.diff(left.getClientCredentials(), right.getClientCredentials())
37-
.ifPresent(changedOAuthFlows::setChangedClientCredentialOAuthFlow);
37+
.ifPresent(changedOAuthFlows::setClientCredentialOAuthFlow);
3838
openApiDiff
3939
.getOAuthFlowDiff()
4040
.diff(left.getAuthorizationCode(), right.getAuthorizationCode())
41-
.ifPresent(changedOAuthFlows::setChangedAuthorizationCodeOAuthFlow);
41+
.ifPresent(changedOAuthFlows::setAuthorizationCodeOAuthFlow);
4242
}
4343
openApiDiff
4444
.getExtensionsDiff()
4545
.diff(getExtensions(left), getExtensions(right))
46-
.ifPresent(changedOAuthFlows::setChangedExtensions);
46+
.ifPresent(changedOAuthFlows::setExtensions);
4747
return isChanged(changedOAuthFlows);
4848
}
4949
}

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public class OpenApiDiff {
2424

2525
private static Logger logger = LoggerFactory.getLogger(OpenApiDiff.class);
2626

27-
private ChangedOpenApi changedOpenApi;
2827
private PathsDiff pathsDiff;
2928
private PathDiff pathDiff;
3029
private SchemaDiff schemaDiff;
@@ -57,7 +56,6 @@ public class OpenApiDiff {
5756
* @param newSpecOpenApi
5857
*/
5958
private OpenApiDiff(OpenAPI oldSpecOpenApi, OpenAPI newSpecOpenApi) {
60-
this.changedOpenApi = new ChangedOpenApi();
6159
this.oldSpecOpenApi = oldSpecOpenApi;
6260
this.newSpecOpenApi = newSpecOpenApi;
6361
if (null == oldSpecOpenApi || null == newSpecOpenApi) {
@@ -169,12 +167,12 @@ private void preProcess(OpenAPI openApi) {
169167
}
170168

171169
private ChangedOpenApi getChangedOpenApi() {
172-
changedOpenApi.setMissingEndpoints(missingEndpoints);
173-
changedOpenApi.setNewEndpoints(newEndpoints);
174-
changedOpenApi.setNewSpecOpenApi(newSpecOpenApi);
175-
changedOpenApi.setOldSpecOpenApi(oldSpecOpenApi);
176-
changedOpenApi.setChangedOperations(changedOperations);
177-
changedOpenApi.setChangedExtensions(changedExtensions);
178-
return changedOpenApi;
170+
return new ChangedOpenApi()
171+
.setMissingEndpoints(missingEndpoints)
172+
.setNewEndpoints(newEndpoints)
173+
.setNewSpecOpenApi(newSpecOpenApi)
174+
.setOldSpecOpenApi(oldSpecOpenApi)
175+
.setChangedOperations(changedOperations)
176+
.setChangedExtensions(changedExtensions);
179177
}
180178
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public Optional<ChangedOperation> diff(
7070
openApiDiff
7171
.getExtensionsDiff()
7272
.diff(oldOperation.getExtensions(), newOperation.getExtensions(), context)
73-
.ifPresent(changedOperation::setExtensions);
73+
.ifPresent(extensions -> changedOperation.setExtensions(extensions));
7474

7575
return isChanged(changedOperation);
7676
}

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

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static com.qdesrame.openapi.diff.utils.ChangedUtils.isChanged;
44

55
import com.qdesrame.openapi.diff.model.ChangedParameter;
6-
import com.qdesrame.openapi.diff.model.ChangedSchema;
76
import com.qdesrame.openapi.diff.model.DiffContext;
87
import com.qdesrame.openapi.diff.utils.RefPointer;
98
import com.qdesrame.openapi.diff.utils.RefType;
@@ -15,10 +14,10 @@
1514

1615
public class ParameterDiff extends ReferenceDiffCache<Parameter, ChangedParameter> {
1716

17+
private static RefPointer<Parameter> refPointer = new RefPointer<>(RefType.PARAMETERS);
1818
private Components leftComponents;
1919
private Components rightComponents;
2020
private OpenApiDiff openApiDiff;
21-
private static RefPointer<Parameter> refPointer = new RefPointer<>(RefType.PARAMETERS);
2221

2322
public ParameterDiff(OpenApiDiff openApiDiff) {
2423
this.openApiDiff = openApiDiff;
@@ -39,38 +38,37 @@ public Optional<ChangedParameter> diff(Parameter left, Parameter right, DiffCont
3938
@Override
4039
protected Optional<ChangedParameter> computeDiff(
4140
HashSet<String> refSet, Parameter left, Parameter right, DiffContext context) {
42-
ChangedParameter changedParameter =
43-
new ChangedParameter(right.getName(), right.getIn(), context);
4441
left = refPointer.resolveRef(this.leftComponents, left, left.get$ref());
4542
right = refPointer.resolveRef(this.rightComponents, right, right.get$ref());
4643

47-
changedParameter.setOldParameter(left);
48-
changedParameter.setNewParameter(right);
49-
50-
changedParameter.setChangeDescription(
51-
!Objects.equals(left.getDescription(), right.getDescription()));
52-
changedParameter.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()));
53-
changedParameter.setDeprecated(
54-
!Boolean.TRUE.equals(left.getDeprecated()) && Boolean.TRUE.equals(right.getDeprecated()));
55-
changedParameter.setChangeAllowEmptyValue(
56-
getBooleanDiff(left.getAllowEmptyValue(), right.getAllowEmptyValue()));
57-
changedParameter.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()));
58-
changedParameter.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
59-
Optional<ChangedSchema> changedSchema =
60-
openApiDiff
61-
.getSchemaDiff()
62-
.diff(refSet, left.getSchema(), right.getSchema(), context.copyWithRequired(true));
63-
if (changedSchema.isPresent()) {
64-
changedParameter.setChangedSchema(changedSchema.get());
65-
}
44+
ChangedParameter changedParameter =
45+
new ChangedParameter(right.getName(), right.getIn(), context)
46+
.setOldParameter(left)
47+
.setNewParameter(right)
48+
.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()))
49+
.setDeprecated(
50+
!Boolean.TRUE.equals(left.getDeprecated())
51+
&& Boolean.TRUE.equals(right.getDeprecated()))
52+
.setChangeAllowEmptyValue(
53+
getBooleanDiff(left.getAllowEmptyValue(), right.getAllowEmptyValue()))
54+
.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()))
55+
.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
56+
openApiDiff
57+
.getSchemaDiff()
58+
.diff(refSet, left.getSchema(), right.getSchema(), context.copyWithRequired(true))
59+
.ifPresent(changedParameter::setSchema);
60+
openApiDiff
61+
.getMetadataDiff()
62+
.diff(left.getDescription(), right.getDescription(), context)
63+
.ifPresent(changedParameter::setDescription);
6664
openApiDiff
6765
.getContentDiff()
6866
.diff(left.getContent(), right.getContent(), context)
69-
.ifPresent(changedParameter::setChangedContent);
67+
.ifPresent(changedParameter::setContent);
7068
openApiDiff
7169
.getExtensionsDiff()
7270
.diff(left.getExtensions(), right.getExtensions(), context)
73-
.ifPresent(changedParameter::setChangedExtensions);
71+
.ifPresent(changedParameter::setExtensions);
7472
return isChanged(changedParameter);
7573
}
7674

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ public PathDiff(OpenApiDiff openApiDiff) {
1818
}
1919

2020
public Optional<ChangedPath> diff(PathItem left, PathItem right, DiffContext context) {
21-
ChangedPath changedPath = new ChangedPath(context.getUrl(), left, right, context);
22-
2321
Map<PathItem.HttpMethod, Operation> oldOperationMap = left.readOperationsMap();
2422
Map<PathItem.HttpMethod, Operation> newOperationMap = right.readOperationsMap();
2523
MapKeyDiff<PathItem.HttpMethod, Operation> operationsDiff =
2624
MapKeyDiff.diff(oldOperationMap, newOperationMap);
27-
changedPath.setIncreased(operationsDiff.getIncreased());
28-
changedPath.setMissing(operationsDiff.getMissing());
2925
List<PathItem.HttpMethod> sharedMethods = operationsDiff.getSharedKey();
26+
ChangedPath changedPath =
27+
new ChangedPath(context.getUrl(), left, right, context)
28+
.setIncreased(operationsDiff.getIncreased())
29+
.setMissing(operationsDiff.getMissing());
3030
for (PathItem.HttpMethod method : sharedMethods) {
3131
Operation oldOperation = oldOperationMap.get(method);
3232
Operation newOperation = newOperationMap.get(method);
@@ -38,7 +38,7 @@ public Optional<ChangedPath> diff(PathItem left, PathItem right, DiffContext con
3838
openApiDiff
3939
.getExtensionsDiff()
4040
.diff(left.getExtensions(), right.getExtensions(), context)
41-
.ifPresent(changedPath::setChangedExtensions);
41+
.ifPresent(changedPath::setExtensions);
4242
return isChanged(changedPath);
4343
}
4444
}

0 commit comments

Comments
 (0)