@@ -152,106 +152,16 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
152
152
String [] lines = ope .unescapedNotes .split ("\n " );
153
153
ope .notes = (lines [0 ] + "\n " + Arrays .stream (lines ).skip (1 ).map (line -> "// " + line ).collect (Collectors .joining ("\n " ))).trim ();
154
154
155
+ // enrich the params
155
156
for (CodegenParameter param : ope .optionalParams ) {
156
157
param .nameInPascalCase = Helpers .capitalize (param .baseName );
157
158
}
158
159
159
160
CodegenParameter bodyParam = ope .bodyParam ;
160
- if (bodyParam == null ) {
161
- continue ;
162
- }
163
- bodyParam .nameInPascalCase = Helpers .capitalize (bodyParam .baseName );
164
- if (!bodyParam .isModel ) {
165
- continue ;
166
- }
167
-
168
- // check for colision with other params
169
- boolean hasCollision = false ;
170
- for (CodegenProperty prop : bodyParam .getVars ()) {
171
- for (CodegenParameter param : ope .allParams ) {
172
- if (param .paramName .equals (prop .baseName )) {
173
- hasCollision = true ;
174
- break ;
175
- }
176
- }
177
- }
178
- if (hasCollision ) {
179
- System .out .println ("Operation " + ope .operationId + " has a body param with the same name as another param, skipping flattening" );
180
- continue ;
181
- }
182
-
183
- if (ope .operationId .equals ("Browse" )) {
184
- System .out .println (
185
- ope .allParams .size () +
186
- " params " +
187
- ope .requiredParams .size () +
188
- " required params " +
189
- ope .optionalParams .size () +
190
- " optional params"
191
- );
192
- }
193
-
194
- bodyParam .vendorExtensions .put ("x-flat-body" , bodyParam .getVars ().size () > 0 );
195
-
196
- if (bodyParam .getVars ().size () > 0 ) {
197
- ope .allParams .removeIf (param -> param .isBodyParam );
198
- ope .requiredParams .removeIf (param -> param .isBodyParam );
199
- ope .optionalParams .removeIf (param -> param .isBodyParam );
200
- }
201
-
202
- for (CodegenProperty prop : bodyParam .getVars ()) {
203
- // there is no easy way to convert a prop to a param, we need to copy all the fields
204
- CodegenParameter param = new CodegenParameter ();
205
-
206
- prop .nameInLowerCase = toParamName (prop .baseName );
207
- param .nameInPascalCase = Helpers .capitalize (prop .baseName );
208
- param .paramName = toParamName (prop .baseName );
209
- param .baseName = prop .baseName ;
210
- param .baseType = prop .baseType ;
211
- param .dataType = prop .dataType ;
212
- param .datatypeWithEnum = prop .datatypeWithEnum ;
213
- param .description = prop .description ;
214
- param .example = prop .example ;
215
- param .isModel = prop .isModel ;
216
- param .isArray = prop .isArray ;
217
- param .isContainer = prop .isContainer ;
218
- param .isMap = prop .isMap ;
219
- param .isEnum = prop .isEnum ;
220
- param .isEnumRef = prop .isEnumRef ;
221
- param .isPrimitiveType = prop .isPrimitiveType ;
222
- param .isString = prop .isString ;
223
- param .isNumeric = prop .isNumeric ;
224
- param .isBoolean = prop .isBoolean ;
225
- param .isDate = prop .isDate ;
226
- param .isDateTime = prop .isDateTime ;
227
- param .isFreeFormObject = prop .isFreeFormObject ;
228
- param .isNullable = prop .isNullable ;
229
- param .jsonSchema = prop .jsonSchema ;
230
- param .required = prop .required ;
231
- param .vendorExtensions = prop .vendorExtensions ;
232
- param .allowableValues = prop .allowableValues ;
233
-
234
- if (prop .required ) {
235
- ope .requiredParams .add (param );
236
- ope .hasRequiredParams = true ;
237
- } else {
238
- ope .optionalParams .add (param );
239
- ope .hasOptionalParams = true ;
240
- }
241
- ope .allParams .add (param );
161
+ if (bodyParam != null ) {
162
+ flattenBody (ope );
242
163
}
243
164
244
- System .out .println (
245
- ope .operationId +
246
- " has " +
247
- ope .requiredParams .size () +
248
- " required params and " +
249
- ope .optionalParams .size () +
250
- " optional params " +
251
- bodyParam .getVars ().size () +
252
- " body params "
253
- );
254
-
255
165
// If the optional param struct only has 1 param, we can remove the wrapper
256
166
if (ope .optionalParams .size () == 1 ) {
257
167
CodegenParameter param = ope .optionalParams .get (0 );
@@ -270,4 +180,80 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
270
180
GenericPropagator .propagateGenericsToOperations (operations , models );
271
181
return operations ;
272
182
}
183
+
184
+ private void flattenBody (CodegenOperation ope ) {
185
+ CodegenParameter bodyParam = ope .bodyParam ;
186
+ bodyParam .nameInPascalCase = Helpers .capitalize (bodyParam .baseName );
187
+ if (!bodyParam .isModel ) {
188
+ return ;
189
+ }
190
+
191
+ // check for colision with other params
192
+ for (CodegenProperty prop : bodyParam .getVars ()) {
193
+ for (CodegenParameter param : ope .allParams ) {
194
+ if (param .paramName .equals (prop .baseName )) {
195
+ System .out .println (
196
+ "Operation " +
197
+ ope .operationId +
198
+ " has body param " +
199
+ bodyParam .paramName +
200
+ " in colision with param " +
201
+ param .paramName +
202
+ ", skipping flattening"
203
+ );
204
+ return ;
205
+ }
206
+ }
207
+ }
208
+
209
+ bodyParam .vendorExtensions .put ("x-flat-body" , bodyParam .getVars ().size () > 0 );
210
+
211
+ if (bodyParam .getVars ().size () > 0 ) {
212
+ ope .allParams .removeIf (param -> param .isBodyParam );
213
+ ope .requiredParams .removeIf (param -> param .isBodyParam );
214
+ ope .optionalParams .removeIf (param -> param .isBodyParam );
215
+ }
216
+
217
+ for (CodegenProperty prop : bodyParam .getVars ()) {
218
+ // there is no easy way to convert a prop to a param, we need to copy all the fields
219
+ CodegenParameter param = new CodegenParameter ();
220
+
221
+ prop .nameInLowerCase = toParamName (prop .baseName );
222
+ param .nameInPascalCase = Helpers .capitalize (prop .baseName );
223
+ param .paramName = toParamName (prop .baseName );
224
+ param .baseName = prop .baseName ;
225
+ param .baseType = prop .baseType ;
226
+ param .dataType = prop .dataType ;
227
+ param .datatypeWithEnum = prop .datatypeWithEnum ;
228
+ param .description = prop .description ;
229
+ param .example = prop .example ;
230
+ param .isModel = prop .isModel ;
231
+ param .isArray = prop .isArray ;
232
+ param .isContainer = prop .isContainer ;
233
+ param .isMap = prop .isMap ;
234
+ param .isEnum = prop .isEnum ;
235
+ param .isEnumRef = prop .isEnumRef ;
236
+ param .isPrimitiveType = prop .isPrimitiveType ;
237
+ param .isString = prop .isString ;
238
+ param .isNumeric = prop .isNumeric ;
239
+ param .isBoolean = prop .isBoolean ;
240
+ param .isDate = prop .isDate ;
241
+ param .isDateTime = prop .isDateTime ;
242
+ param .isFreeFormObject = prop .isFreeFormObject ;
243
+ param .isNullable = prop .isNullable ;
244
+ param .jsonSchema = prop .jsonSchema ;
245
+ param .required = prop .required ;
246
+ param .vendorExtensions = prop .vendorExtensions ;
247
+ param .allowableValues = prop .allowableValues ;
248
+
249
+ if (prop .required ) {
250
+ ope .requiredParams .add (param );
251
+ ope .hasRequiredParams = true ;
252
+ } else {
253
+ ope .optionalParams .add (param );
254
+ ope .hasOptionalParams = true ;
255
+ }
256
+ ope .allParams .add (param );
257
+ }
258
+ }
273
259
}
0 commit comments