File tree Expand file tree Collapse file tree 3 files changed +11
-10
lines changed
main/java/org/openapitools/openapidiff/core/model
java/org/openapitools/openapidiff/core Expand file tree Collapse file tree 3 files changed +11
-10
lines changed Original file line number Diff line number Diff line change 5
5
import java .util .*;
6
6
import java .util .stream .Collectors ;
7
7
import java .util .stream .Stream ;
8
- import org .openapitools .openapidiff .core .model .schema .ChangedEnum ;
9
- import org .openapitools .openapidiff .core .model .schema .ChangedMaxLength ;
10
- import org .openapitools .openapidiff .core .model .schema .ChangedReadOnly ;
11
- import org .openapitools .openapidiff .core .model .schema .ChangedRequired ;
12
- import org .openapitools .openapidiff .core .model .schema .ChangedWriteOnly ;
8
+ import org .openapitools .openapidiff .core .model .schema .*;
13
9
14
10
public class ChangedSchema implements ComposedChanged {
15
11
protected DiffContext context ;
@@ -137,8 +133,13 @@ private DiffResult calculateCoreChanged() {
137
133
&& !discriminatorPropertyChanged ) {
138
134
return DiffResult .NO_CHANGES ;
139
135
}
136
+ boolean missingRequiredProperties =
137
+ oldSchema != null
138
+ && oldSchema .getRequired () != null
139
+ && missingProperties .keySet ().stream ()
140
+ .anyMatch (missingProperty -> oldSchema .getRequired ().contains (missingProperty ));
140
141
boolean compatibleForResponse =
141
- missingProperties . isEmpty () && (oldSchema == null || newSchema != null );
142
+ ! missingRequiredProperties && (oldSchema == null || newSchema != null );
142
143
if ((context .isRequest () && compatibleForRequest ()
143
144
|| context .isResponse () && compatibleForResponse )
144
145
&& !changedType
Original file line number Diff line number Diff line change 1
1
package org .openapitools .openapidiff .core ;
2
2
3
- import static org .openapitools .openapidiff .core .TestUtils .assertOpenApiAreEquals ;
4
- import static org .openapitools .openapidiff .core .TestUtils .assertOpenApiBackwardIncompatible ;
3
+ import static org .openapitools .openapidiff .core .TestUtils .*;
5
4
6
5
import org .junit .jupiter .api .Test ;
7
6
@@ -16,6 +15,6 @@ public void testDiffSame() {
16
15
17
16
@ Test
18
17
public void testDiffDifferent () {
19
- assertOpenApiBackwardIncompatible (OPENAPI_DOC1 , OPENAPI_DOC2 );
18
+ assertOpenApiBackwardCompatible (OPENAPI_DOC1 , OPENAPI_DOC2 , true );
20
19
}
21
20
}
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ components:
19
19
schemas :
20
20
B :
21
21
type : object
22
+ required : ["message2"]
22
23
properties :
23
24
message :
24
25
type : string
@@ -27,4 +28,4 @@ components:
27
28
details :
28
29
type : array
29
30
items :
30
- $ref : ' #/components/schemas/B'
31
+ $ref : ' #/components/schemas/B'
You can’t perform that action at this time.
0 commit comments