Skip to content

Commit bd861a0

Browse files
authored
Merge pull request #453 from swagger-api/codegen-issue-9569
avoid create composed models for non object schemas
2 parents f008c5d + 0dd09f4 commit bd861a0

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package io.swagger.codegen.v3.generators;
22

3-
import io.swagger.codegen.v3.*;
3+
import io.swagger.codegen.v3.CodegenModel;
4+
import io.swagger.codegen.v3.CodegenModelFactory;
5+
import io.swagger.codegen.v3.CodegenModelType;
6+
import io.swagger.codegen.v3.CodegenProperty;
47
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
58
import io.swagger.v3.oas.models.media.ComposedSchema;
9+
import io.swagger.v3.oas.models.media.ObjectSchema;
610
import io.swagger.v3.oas.models.media.Schema;
711
import org.apache.commons.lang3.StringUtils;
812

@@ -28,12 +32,16 @@ public void createCodegenModel(ComposedSchema composedProperty, CodegenProperty
2832
final List<Schema> anyOf = composedProperty.getAnyOf();
2933

3034
if (oneOf != null && !oneOf.isEmpty()) {
31-
final CodegenModel oneOfModel = createFromOneOfSchemas(oneOf);
32-
codegenProperty.vendorExtensions.put("oneOf-model", oneOfModel);
35+
if (!hasNonObjectSchema(oneOf)) {
36+
final CodegenModel oneOfModel = createFromOneOfSchemas(oneOf);
37+
codegenProperty.vendorExtensions.put("oneOf-model", oneOfModel);
38+
}
3339
}
3440
if (anyOf != null && !anyOf.isEmpty()) {
35-
final CodegenModel anyOfModel = createFromOneOfSchemas(anyOf);
36-
codegenProperty.vendorExtensions.put("anyOf-model", anyOfModel);
41+
if (!hasNonObjectSchema(anyOf)) {
42+
final CodegenModel anyOfModel = createFromOneOfSchemas(anyOf);
43+
codegenProperty.vendorExtensions.put("anyOf-model", anyOfModel);
44+
}
3745
}
3846

3947
}
@@ -173,4 +181,14 @@ private void configureModel(CodegenModel codegenModel, String name) {
173181
codegenModel.classFilename = codegenConfig.toModelFilename(name);
174182
codegenModel.vendorExtensions.put("x-is-composed-model", Boolean.TRUE);
175183
}
184+
185+
private boolean hasNonObjectSchema(List<Schema> schemas) {
186+
for (Schema schema : schemas) {
187+
boolean hasNonObjectSchema = (!(schema instanceof ObjectSchema)) || (schema.getProperties() != null && !schema.getProperties().isEmpty());
188+
if (hasNonObjectSchema) {
189+
return true;
190+
}
191+
}
192+
return false;
193+
}
176194
}

0 commit comments

Comments
 (0)