@@ -216,13 +216,22 @@ private String schema(ChangedSchema schema) {
216
216
return schema (1 , schema );
217
217
}
218
218
219
+ private static boolean isDisplayed (ChangedSchema schema ) {
220
+ return isDisplayed (schema .getNewSchema (), schema .getContext ());
221
+ }
222
+
223
+ private static boolean isDisplayed (Schema schema , DiffContext context ) {
224
+ return !(Boolean .TRUE .equals (schema .getWriteOnly ()) && context .isResponse ())
225
+ || !(Boolean .TRUE .equals (schema .getReadOnly ()) && context .isRequest ());
226
+ }
227
+
219
228
private String oneOfSchema (int deepness , ChangedOneOfSchema schema , String discriminator ) {
220
229
StringBuilder sb = new StringBuilder ("" );
221
230
sb .append (format ("%sSwitch `%s`:\n " , indent (deepness ), discriminator ));
222
231
schema .getMissingMapping ().keySet ()
223
232
.forEach (key -> sb .append (format ("%s- Removed '%s'\n " , indent (deepness ), key )));
224
233
schema .getIncreasedMapping ().forEach ((key , sub ) ->
225
- sb .append (format ("%s- Added '%s':\n " , indent (deepness ), key )).append (schema (deepness + 1 , sub )));
234
+ sb .append (format ("%s- Added '%s':\n " , indent (deepness ), key )).append (schema (deepness + 1 , sub , schema . getContext () )));
226
235
schema .getChangedMapping ().forEach ((key , sub ) ->
227
236
sb .append (format ("%s- Updated `%s`:\n " , indent (deepness ), key ))
228
237
.append (schema (deepness + 1 , sub )));
@@ -231,6 +240,9 @@ private String oneOfSchema(int deepness, ChangedOneOfSchema schema, String discr
231
240
232
241
private String schema (int deepness , ChangedSchema schema ) {
233
242
StringBuilder sb = new StringBuilder ("" );
243
+ if (!isDisplayed (schema )) {
244
+ return sb .toString ();
245
+ }
234
246
if (schema .isDiscriminatorPropertyChanged ()) {
235
247
LOGGER .debug ("Discriminator property changed" );
236
248
}
@@ -240,59 +252,41 @@ private String schema(int deepness, ChangedSchema schema) {
240
252
sb .append (oneOfSchema (deepness , schema .getChangedOneOfSchema (), discriminator ));
241
253
}
242
254
sb .append (listDiff (deepness , "enum" , schema .getChangeEnum ()));
243
- sb .append (properties (deepness , "Added property" , schema .getIncreasedProperties (), true ));
244
- sb .append (properties (deepness , "Deleted property" , schema .getMissingProperties (), false ));
255
+ sb .append (properties (deepness , "Added property" , schema .getIncreasedProperties (), true , schema . getContext () ));
256
+ sb .append (properties (deepness , "Deleted property" , schema .getMissingProperties (), false , schema . getContext () ));
245
257
schema .getChangedProperties ().forEach ((name , property ) -> sb .append (property (deepness , name , property )));
246
258
return sb .toString ();
247
259
}
248
260
249
- private String schema (int deepness , ComposedSchema schema ) {
261
+ private String schema (int deepness , ComposedSchema schema , DiffContext context ) {
250
262
StringBuilder sb = new StringBuilder ("" );
251
263
if (schema .getAllOf () != null && schema .getAllOf () != null ) {
252
264
LOGGER .debug ("All of schema" );
253
265
schema .getAllOf ().stream ()
254
266
.map (this ::resolve )
255
- .forEach (composedChild -> sb .append (schema (deepness , composedChild )));
267
+ .forEach (composedChild -> sb .append (schema (deepness , composedChild , context )));
256
268
}
257
269
if (schema .getOneOf () != null && schema .getOneOf () != null ) {
258
270
LOGGER .debug ("One of schema" );
259
271
sb .append (format ("%sOne of:\n \n " , indent (deepness )));
260
272
schema .getOneOf ().stream ()
261
273
.map (this ::resolve )
262
- .forEach (composedChild -> sb .append (schema (deepness + 1 , composedChild )));
274
+ .forEach (composedChild -> sb .append (schema (deepness + 1 , composedChild , context )));
263
275
}
264
276
return sb .toString ();
265
277
}
266
278
267
- private String schema (int deepness , Schema schema ) {
279
+ private String schema (int deepness , Schema schema , DiffContext context ) {
268
280
StringBuilder sb = new StringBuilder ("" );
281
+ if (!isDisplayed (schema , context )) {
282
+ return sb .toString ();
283
+ }
269
284
sb .append (listItem (deepness , "Enum" , schema .getEnum ()));
270
- sb .append (properties (deepness , "Property" , schema .getProperties (), true ));
285
+ sb .append (properties (deepness , "Property" , schema .getProperties (), true , context ));
271
286
if (schema instanceof ComposedSchema ) {
272
- sb .append (schema (deepness , (ComposedSchema ) schema ));
287
+ sb .append (schema (deepness , (ComposedSchema ) schema , context ));
273
288
} else if (schema instanceof ArraySchema ) {
274
- sb .append (items (deepness , resolve (((ArraySchema ) schema ).getItems ())));
275
- }
276
- return sb .toString ();
277
- }
278
-
279
- private String items (int deepness , Schema schema ) {
280
- StringBuilder sb = new StringBuilder ("" );
281
- sb .append (format ("%sItems (%s)%s\n " , indent (deepness ), type (schema ), Arrays .asList ("object" , "array" ).contains (type (schema )) ? " :\n " : "" ));
282
- description (indent (deepness + 1 ), schema .getDescription ());
283
- sb .append (schema (deepness , schema ));
284
- return sb .toString ();
285
- }
286
-
287
- private String properties (final int deepness , String title , Map <String , Schema > properties , boolean showContent ) {
288
- StringBuilder sb = new StringBuilder ("" );
289
- if (properties != null ) {
290
- properties .forEach ((key , value ) -> {
291
- sb .append (property (deepness , title , key , resolve (value )));
292
- if (showContent ) {
293
- sb .append (schema (deepness + 1 , resolve (value )));
294
- }
295
- });
289
+ sb .append (items (deepness , resolve (((ArraySchema ) schema ).getItems ()), context ));
296
290
}
297
291
return sb .toString ();
298
292
}
@@ -405,4 +399,25 @@ private String indent(int deepness) {
405
399
private Schema resolve (Schema schema ) {
406
400
return refPointer .resolveRef (diff .getNewSpecOpenApi ().getComponents (), schema , schema .get$ref ());
407
401
}
402
+
403
+ private String items (int deepness , Schema schema , DiffContext context ) {
404
+ StringBuilder sb = new StringBuilder ("" );
405
+ sb .append (format ("%sItems (%s)%s\n " , indent (deepness ), type (schema ), Arrays .asList ("object" , "array" ).contains (type (schema )) ? " :\n " : "" ));
406
+ description (indent (deepness + 1 ), schema .getDescription ());
407
+ sb .append (schema (deepness , schema , context ));
408
+ return sb .toString ();
409
+ }
410
+
411
+ private String properties (final int deepness , String title , Map <String , Schema > properties , boolean showContent , DiffContext context ) {
412
+ StringBuilder sb = new StringBuilder ("" );
413
+ if (properties != null ) {
414
+ properties .forEach ((key , value ) -> {
415
+ sb .append (property (deepness , title , key , resolve (value )));
416
+ if (showContent ) {
417
+ sb .append (schema (deepness + 1 , resolve (value ), context ));
418
+ }
419
+ });
420
+ }
421
+ return sb .toString ();
422
+ }
408
423
}
0 commit comments