11package com .qdesrame .openapi .diff .output ;
22
33import com .qdesrame .openapi .diff .model .*;
4+ import com .qdesrame .openapi .diff .utils .RefPointer ;
5+ import com .qdesrame .openapi .diff .utils .RefType ;
46import io .swagger .v3 .oas .models .headers .Header ;
57import io .swagger .v3 .oas .models .media .ArraySchema ;
8+ import io .swagger .v3 .oas .models .media .ComposedSchema ;
69import io .swagger .v3 .oas .models .media .MediaType ;
710import io .swagger .v3 .oas .models .media .Schema ;
811import io .swagger .v3 .oas .models .parameters .Parameter ;
1821import static java .lang .String .format ;
1922
2023public class MarkdownRender implements Render {
24+
2125 public static final Logger LOGGER = LoggerFactory .getLogger (MarkdownRender .class );
2226
2327 private final String H3 = "### " ;
@@ -31,10 +35,14 @@ public class MarkdownRender implements Render {
3135 private final String LI = "* " ;
3236 private final String HR = "---\n " ;
3337
38+ private static RefPointer <Schema > refPointer = new RefPointer <>(RefType .SCHEMAS );
39+ private ChangedOpenApi diff ;
40+
3441 public MarkdownRender () {
3542 }
3643
3744 public String render (ChangedOpenApi diff ) {
45+ this .diff = diff ;
3846 StringBuilder sb = new StringBuilder ();
3947 sb .append (listEndpoints ("What's New" , diff .getNewEndpoints ()))
4048 .append (listEndpoints ("What's Deleted" , diff .getMissingEndpoints ()))
@@ -209,18 +217,37 @@ private String schema(ChangedSchema schema) {
209217
210218 private String schema (int deepness , ChangedSchema schema ) {
211219 StringBuilder sb = new StringBuilder ("" );
220+ if (schema .isDiscriminatorPropertyChanged ()) {
221+ LOGGER .debug ("Discriminator property changed" );
222+ }
223+ if (schema .getChangedOneOfSchema () != null ) {
224+ LOGGER .debug ("One of schema changed" );
225+ }
212226 sb .append (listDiff (deepness , "enum" , schema .getChangeEnum ()));
213227 sb .append (properties (deepness , "Added property" , schema .getIncreasedProperties (), true ));
214228 sb .append (properties (deepness , "Deleted property" , schema .getMissingProperties (), false ));
215229 schema .getChangedProperties ().forEach ((name , property ) -> sb .append (property (deepness , name , property )));
216230 return sb .toString ();
217231 }
218232
233+ private String schema (int deepness , ComposedSchema schema ) {
234+ StringBuilder sb = new StringBuilder ("" );
235+ if (schema .getAllOf () != null && schema .getAllOf () != null ) {
236+ LOGGER .debug ("All of schema" );
237+ schema .getAllOf ().stream ()
238+ .map (schema1 -> refPointer .resolveRef (diff .getNewSpecOpenApi ().getComponents (), schema1 , schema1 .get$ref ()))
239+ .forEach (composedChild -> sb .append (schema (deepness , composedChild )));
240+ }
241+ return sb .toString ();
242+ }
219243
220244 private String schema (int deepness , Schema schema ) {
221245 StringBuilder sb = new StringBuilder ("" );
222246 sb .append (listItem (deepness , "Enum" , schema .getEnum ()));
223247 sb .append (properties (deepness , "Property" , schema .getProperties (), true ));
248+ if (schema instanceof ComposedSchema ) {
249+ sb .append (schema (deepness , (ComposedSchema ) schema ));
250+ }
224251 return sb .toString ();
225252 }
226253
0 commit comments