1
1
package com .qdesrame .openapi .diff .output ;
2
2
3
3
import com .qdesrame .openapi .diff .model .*;
4
+ import com .qdesrame .openapi .diff .utils .RefPointer ;
5
+ import com .qdesrame .openapi .diff .utils .RefType ;
4
6
import io .swagger .v3 .oas .models .headers .Header ;
5
7
import io .swagger .v3 .oas .models .media .ArraySchema ;
8
+ import io .swagger .v3 .oas .models .media .ComposedSchema ;
6
9
import io .swagger .v3 .oas .models .media .MediaType ;
7
10
import io .swagger .v3 .oas .models .media .Schema ;
8
11
import io .swagger .v3 .oas .models .parameters .Parameter ;
18
21
import static java .lang .String .format ;
19
22
20
23
public class MarkdownRender implements Render {
24
+
21
25
public static final Logger LOGGER = LoggerFactory .getLogger (MarkdownRender .class );
22
26
23
27
private final String H3 = "### " ;
@@ -31,10 +35,14 @@ public class MarkdownRender implements Render {
31
35
private final String LI = "* " ;
32
36
private final String HR = "---\n " ;
33
37
38
+ private static RefPointer <Schema > refPointer = new RefPointer <>(RefType .SCHEMAS );
39
+ private ChangedOpenApi diff ;
40
+
34
41
public MarkdownRender () {
35
42
}
36
43
37
44
public String render (ChangedOpenApi diff ) {
45
+ this .diff = diff ;
38
46
StringBuilder sb = new StringBuilder ();
39
47
sb .append (listEndpoints ("What's New" , diff .getNewEndpoints ()))
40
48
.append (listEndpoints ("What's Deleted" , diff .getMissingEndpoints ()))
@@ -209,18 +217,37 @@ private String schema(ChangedSchema schema) {
209
217
210
218
private String schema (int deepness , ChangedSchema schema ) {
211
219
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
+ }
212
226
sb .append (listDiff (deepness , "enum" , schema .getChangeEnum ()));
213
227
sb .append (properties (deepness , "Added property" , schema .getIncreasedProperties (), true ));
214
228
sb .append (properties (deepness , "Deleted property" , schema .getMissingProperties (), false ));
215
229
schema .getChangedProperties ().forEach ((name , property ) -> sb .append (property (deepness , name , property )));
216
230
return sb .toString ();
217
231
}
218
232
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
+ }
219
243
220
244
private String schema (int deepness , Schema schema ) {
221
245
StringBuilder sb = new StringBuilder ("" );
222
246
sb .append (listItem (deepness , "Enum" , schema .getEnum ()));
223
247
sb .append (properties (deepness , "Property" , schema .getProperties (), true ));
248
+ if (schema instanceof ComposedSchema ) {
249
+ sb .append (schema (deepness , (ComposedSchema ) schema ));
250
+ }
224
251
return sb .toString ();
225
252
}
226
253
0 commit comments