9
9
import io .swagger .v3 .oas .models .media .MediaType ;
10
10
import io .swagger .v3 .oas .models .media .ObjectSchema ;
11
11
import io .swagger .v3 .oas .models .media .Schema ;
12
+ import io .swagger .v3 .oas .models .media .StringSchema ;
12
13
import io .swagger .v3 .oas .models .media .XML ;
13
14
import io .swagger .v3 .oas .models .parameters .Parameter ;
14
15
import io .swagger .v3 .oas .models .parameters .RequestBody ;
@@ -69,7 +70,11 @@ public void flatten(OpenAPI openAPI) {
69
70
mediaType .setSchema (new Schema ().$ref (modelName ));
70
71
addGenerated (modelName , model );
71
72
openAPI .getComponents ().addSchemas (modelName , model );
72
-
73
+ } else if (model instanceof ComposedSchema ) {
74
+ String modelName = resolveModelName (model .getTitle (), "body" );
75
+ mediaType .setSchema (new Schema ().$ref (modelName ));
76
+ addGenerated (modelName , model );
77
+ openAPI .getComponents ().addSchemas (modelName , model );
73
78
} else if (model instanceof ArraySchema ) {
74
79
ArraySchema am = (ArraySchema ) model ;
75
80
Schema inner = am .getItems ();
@@ -78,14 +83,13 @@ public void flatten(OpenAPI openAPI) {
78
83
if (inner .getProperties () != null && inner .getProperties ().size () > 0 ) {
79
84
flattenProperties (inner .getProperties (), pathname );
80
85
String modelName = resolveModelName (inner .getTitle (), "body" );
81
- Schema innerModel = createModelFromProperty (inner , modelName );
82
- String existing = matchGenerated (innerModel );
86
+ String existing = matchGenerated (inner );
83
87
if (existing != null ) {
84
88
am .setItems (new Schema ().$ref (existing ));
85
89
} else {
86
90
am .setItems (new Schema ().$ref (modelName ));
87
- addGenerated (modelName , innerModel );
88
- openAPI .getComponents ().addSchemas (modelName , innerModel );
91
+ addGenerated (modelName , inner );
92
+ openAPI .getComponents ().addSchemas (modelName , inner );
89
93
}
90
94
}
91
95
}
@@ -110,22 +114,25 @@ public void flatten(OpenAPI openAPI) {
110
114
openAPI .getComponents ().addSchemas (modelName , model );
111
115
}
112
116
}
113
- } else if (model instanceof ArraySchema ) {
117
+ }else if (model instanceof ComposedSchema ) {
118
+ String modelName = resolveModelName (model .getTitle (), parameter .getName ());
119
+ parameter .setSchema (new Schema ().$ref (modelName ));
120
+ addGenerated (modelName , model );
121
+ openAPI .getComponents ().addSchemas (modelName , model );
122
+ }else if (model instanceof ArraySchema ) {
114
123
ArraySchema am = (ArraySchema ) model ;
115
124
Schema inner = am .getItems ();
116
-
117
125
if (isObjectSchema (inner )) {
118
126
if (inner .getProperties () != null && inner .getProperties ().size () > 0 ) {
119
127
flattenProperties (inner .getProperties (), pathname );
120
128
String modelName = resolveModelName (inner .getTitle (), parameter .getName ());
121
- Schema innerModel = createModelFromProperty (inner , modelName );
122
- String existing = matchGenerated (innerModel );
129
+ String existing = matchGenerated (inner );
123
130
if (existing != null ) {
124
131
am .setItems (new Schema ().$ref (existing ));
125
132
} else {
126
133
am .setItems (new Schema ().$ref (modelName ));
127
- addGenerated (modelName , innerModel );
128
- openAPI .getComponents ().addSchemas (modelName , innerModel );
134
+ addGenerated (modelName , am );
135
+ openAPI .getComponents ().addSchemas (modelName , am );
129
136
}
130
137
}
131
138
}
@@ -147,17 +154,27 @@ public void flatten(OpenAPI openAPI) {
147
154
if (isObjectSchema (mediaSchema )) {
148
155
if (mediaSchema .getProperties () != null && mediaSchema .getProperties ().size () > 0 ) {
149
156
String modelName = resolveModelName (mediaSchema .getTitle (), "inline_response_" + key );
150
- Schema model = createModelFromProperty (mediaSchema , modelName );
151
- String existing = matchGenerated (model );
157
+ String existing = matchGenerated (mediaSchema );
152
158
if (existing != null ) {
153
159
media .setSchema (this .makeRefProperty (existing , mediaSchema ));
154
160
} else {
155
161
media .setSchema (this .makeRefProperty (modelName , mediaSchema ));
156
- addGenerated (modelName , model );
157
- openAPI .getComponents ().addSchemas (modelName , model );
162
+ addGenerated (modelName , mediaSchema );
163
+ openAPI .getComponents ().addSchemas (modelName , mediaSchema );
158
164
}
159
165
}
160
- } else if (mediaSchema instanceof ArraySchema ) {
166
+ } else if (mediaSchema instanceof ComposedSchema ){
167
+ String modelName = resolveModelName (mediaSchema .getTitle (), "inline_response_" + key );
168
+ String existing = matchGenerated (mediaSchema );
169
+ if (existing != null ) {
170
+ media .setSchema (this .makeRefProperty (existing , mediaSchema ));
171
+ } else {
172
+ media .setSchema (this .makeRefProperty (modelName , mediaSchema ));
173
+ addGenerated (modelName , mediaSchema );
174
+ openAPI .getComponents ().addSchemas (modelName , mediaSchema );
175
+ }
176
+
177
+ }else if (mediaSchema instanceof ArraySchema ) {
161
178
ArraySchema ap = (ArraySchema ) mediaSchema ;
162
179
Schema inner = ap .getItems ();
163
180
@@ -166,14 +183,13 @@ public void flatten(OpenAPI openAPI) {
166
183
flattenProperties (inner .getProperties (), pathname );
167
184
String modelName = resolveModelName (inner .getTitle (),
168
185
"inline_response_" + key );
169
- Schema innerModel = createModelFromProperty (inner , modelName );
170
- String existing = matchGenerated (innerModel );
186
+ String existing = matchGenerated (inner );
171
187
if (existing != null ) {
172
188
ap .setItems (this .makeRefProperty (existing , inner ));
173
189
} else {
174
190
ap .setItems (this .makeRefProperty (modelName , inner ));
175
- addGenerated (modelName , innerModel );
176
- openAPI .getComponents ().addSchemas (modelName , innerModel );
191
+ addGenerated (modelName , inner );
192
+ openAPI .getComponents ().addSchemas (modelName , inner );
177
193
}
178
194
}
179
195
}
@@ -185,14 +201,13 @@ public void flatten(OpenAPI openAPI) {
185
201
flattenProperties (innerProperty .getProperties (), pathname );
186
202
String modelName = resolveModelName (innerProperty .getTitle (),
187
203
"inline_response_" + key );
188
- Schema innerModel = createModelFromProperty (innerProperty , modelName );
189
- String existing = matchGenerated (innerModel );
204
+ String existing = matchGenerated (innerProperty );
190
205
if (existing != null ) {
191
206
mediaSchema .setAdditionalProperties (new Schema ().$ref (existing ));
192
207
} else {
193
208
mediaSchema .setAdditionalProperties (new Schema ().$ref (modelName ));
194
- addGenerated (modelName , innerModel );
195
- openAPI .getComponents ().addSchemas (modelName , innerModel );
209
+ addGenerated (modelName , innerProperty );
210
+ openAPI .getComponents ().addSchemas (modelName , innerProperty );
196
211
}
197
212
}
198
213
}
@@ -222,11 +237,10 @@ public void flatten(OpenAPI openAPI) {
222
237
if (isObjectSchema (inner )) {
223
238
if (inner .getProperties () != null && inner .getProperties ().size () > 0 ) {
224
239
String innerModelName = resolveModelName (inner .getTitle (), modelName + "_inner" );
225
- Schema innerModel = createModelFromProperty (inner , innerModelName );
226
- String existing = matchGenerated (innerModel );
240
+ String existing = matchGenerated (inner );
227
241
if (existing == null ) {
228
- openAPI .getComponents ().addSchemas (innerModelName , innerModel );
229
- addGenerated (innerModelName , innerModel );
242
+ openAPI .getComponents ().addSchemas (innerModelName , inner );
243
+ addGenerated (innerModelName , inner );
230
244
m .setItems (new Schema ().$ref (innerModelName ));
231
245
} else {
232
246
m .setItems (new Schema ().$ref (existing ));
0 commit comments