7
7
import io .swagger .codegen .v3 .generators .DefaultCodegenConfig ;
8
8
import io .swagger .codegen .v3 .generators .SchemaHandler ;
9
9
import io .swagger .codegen .v3 .generators .util .OpenAPIUtil ;
10
+ import io .swagger .util .Json ;
10
11
import io .swagger .v3 .oas .models .media .ArraySchema ;
11
12
import io .swagger .v3 .oas .models .media .ComposedSchema ;
12
13
import io .swagger .v3 .oas .models .media .Schema ;
@@ -22,6 +23,33 @@ public HtmlSchemaHandler(DefaultCodegenConfig codegenConfig) {
22
23
super (codegenConfig );
23
24
}
24
25
26
+ public void processComposedSchemas (CodegenModel codegenModel , Schema schema , Map <String , CodegenModel > allModels ) {
27
+ if (!(schema instanceof ComposedSchema )) {
28
+ super .processComposedSchemas (codegenModel , schema , allModels );
29
+ return ;
30
+ }
31
+ final ComposedSchema composedSchema = (ComposedSchema ) schema ;
32
+ if (composedSchema .getAllOf () == null || composedSchema .getAllOf ().isEmpty ()) {
33
+ super .processComposedSchemas (codegenModel , composedSchema , allModels );
34
+ return ;
35
+ }
36
+ final List <CodegenProperty > codegenProperties = codegenModel .vars ;
37
+ if (codegenProperties == null || codegenProperties .isEmpty ()) {
38
+ return ;
39
+ }
40
+ for (CodegenProperty codegenProperty : codegenProperties ) {
41
+ if (codegenProperty .getIsListContainer ()) {
42
+ Schema schemaProperty = OpenAPIUtil .getPropertyFromAllOfSchema (codegenProperty .baseName , composedSchema .getAllOf (), this .codegenConfig .getOpenAPI ());
43
+ if (schemaProperty == null || !(schemaProperty instanceof ArraySchema )) {
44
+ continue ;
45
+ }
46
+ this .processArrayItemSchema (StringUtils .EMPTY , codegenProperty , (ArraySchema ) schemaProperty , allModels );
47
+ break ;
48
+ }
49
+ }
50
+ }
51
+
52
+ @ Override
25
53
protected CodegenModel processComposedSchema (CodegenModel codegenModel , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
26
54
List <Schema > schemas = composedSchema .getOneOf ();
27
55
CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModel .getName (), schemas );
@@ -43,6 +71,7 @@ protected CodegenModel processComposedSchema(CodegenModel codegenModel, Composed
43
71
return null ;
44
72
}
45
73
74
+ @ Override
46
75
protected CodegenModel processComposedSchema (String codegenModelName , CodegenProperty codegenProperty , ComposedSchema composedSchema , Map <String , CodegenModel > allModels ) {
47
76
List <Schema > schemas = composedSchema .getOneOf ();
48
77
CodegenModel composedModel = this .createComposedModel (ONE_OF_PREFFIX + codegenModelName , schemas );
@@ -56,7 +85,7 @@ protected CodegenModel processComposedSchema(String codegenModelName, CodegenPro
56
85
if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
57
86
codegenProperty .vendorExtensions .put ("oneOf-model" , composedModel );
58
87
59
- } else if (composedModel .getName ().startsWith (ONE_OF_PREFFIX )) {
88
+ } else if (composedModel .getName ().startsWith (ANY_OF_PREFFIX )) {
60
89
codegenProperty .vendorExtensions .put ("anyOf-model" , composedModel );
61
90
}
62
91
final List <String > modelNames = new ArrayList <>();
@@ -69,4 +98,22 @@ protected CodegenModel processComposedSchema(String codegenModelName, CodegenPro
69
98
composedModel .vendorExtensions .put ("x-model-names" , modelNames );
70
99
return null ;
71
100
}
101
+
102
+ @ Override
103
+ protected CodegenModel processArrayItemSchema (CodegenModel codegenModel , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
104
+ final Schema itemsSchema = arraySchema .getItems ();
105
+ if (itemsSchema instanceof ComposedSchema ) {
106
+ this .processComposedSchema (codegenModel , (ComposedSchema ) itemsSchema , allModels );
107
+ }
108
+ return null ;
109
+ }
110
+
111
+ @ Override
112
+ protected CodegenModel processArrayItemSchema (String codegenModelName , CodegenProperty codegenProperty , ArraySchema arraySchema , Map <String , CodegenModel > allModels ) {
113
+ final Schema itemsSchema = arraySchema .getItems ();
114
+ if (itemsSchema instanceof ComposedSchema ) {
115
+ this .processComposedSchema (codegenModelName , codegenProperty .items , (ComposedSchema ) itemsSchema , allModels );
116
+ }
117
+ return null ;
118
+ }
72
119
}
0 commit comments