Skip to content

Commit d9060a0

Browse files
committed
fixed type for allOf schema as properties
1 parent 79e13b9 commit d9060a0

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,9 @@ public String toModelName(final String name) {
12411241
* @return Codegen Model object
12421242
*/
12431243
public CodegenModel fromModel(String name, Schema schema) {
1244+
if (openAPI != null && openAPI.getComponents() != null && openAPI.getComponents().getSchemas() != null) {
1245+
return fromModel(name, schema, openAPI.getComponents().getSchemas());
1246+
}
12441247
return fromModel(name, schema, null);
12451248
}
12461249

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
public class SchemaHandler implements ISchemaHandler {
1919

20+
public static final String ALL_OF_PREFFIX = "AllOf";
2021
public static final String ONE_OF_PREFFIX = "OneOf";
2122
public static final String ANY_OF_PREFFIX = "AnyOf";
2223
public static final String ARRAY_ITEMS_SUFFIX = "Items";
@@ -99,7 +100,13 @@ protected CodegenModel processComposedSchema(String name, ComposedSchema compose
99100
}
100101

101102
protected CodegenModel processComposedSchema(String codegenModelName, CodegenProperty codegenProperty, ComposedSchema composedSchema, Map<String, CodegenModel> allModels) {
102-
List<Schema> schemas = composedSchema.getOneOf();
103+
List<Schema> schemas = composedSchema.getAllOf();
104+
if (schemas != null && !schemas.isEmpty()) {
105+
final CodegenModel composedModel = codegenConfig.fromModel(ALL_OF_PREFFIX + codegenModelName, composedSchema);
106+
this.updatePropertyDataType(codegenProperty, composedModel);
107+
return composedModel;
108+
}
109+
schemas = composedSchema.getOneOf();
103110
CodegenModel composedModel = this.createComposedModel(ONE_OF_PREFFIX + codegenModelName, schemas);
104111
if (composedModel == null) {
105112
schemas = composedSchema.getAnyOf();
@@ -109,10 +116,7 @@ protected CodegenModel processComposedSchema(String codegenModelName, CodegenPro
109116
}
110117
}
111118
this.addInterfaces(schemas, composedModel, allModels);
112-
codegenProperty.datatype = composedModel.getClassname();
113-
codegenProperty.datatypeWithEnum = composedModel.getClassname();
114-
codegenProperty.baseType = composedModel.getClassname();
115-
codegenProperty.complexType = composedModel.getClassname();
119+
this.updatePropertyDataType(codegenProperty, composedModel);
116120
return composedModel;
117121
}
118122

@@ -221,4 +225,11 @@ protected void updateArrayModel(CodegenModel codegenModel, String schemaName, Ar
221225

222226
arraySchema.setItems(items);
223227
}
228+
229+
private void updatePropertyDataType(CodegenProperty codegenProperty, CodegenModel composedModel) {
230+
codegenProperty.datatype = composedModel.getClassname();
231+
codegenProperty.datatypeWithEnum = composedModel.getClassname();
232+
codegenProperty.baseType = composedModel.getClassname();
233+
codegenProperty.complexType = composedModel.getClassname();
234+
}
224235
}

src/main/java/io/swagger/codegen/v3/generators/nodejs/NodeJSServerCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ public void processOpts() {
325325

326326
@Override
327327
public void preprocessOpenAPI(OpenAPI openAPI) {
328+
this.openAPI = openAPI;
328329
URL url = URLPathUtil.getServerURL(openAPI);
329330
String host = URLPathUtil.LOCAL_HOST;
330331
String port = "8080";

src/main/java/io/swagger/codegen/v3/generators/python/PythonFlaskConnexionCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ public String getSchemaType(Schema p) {
330330

331331
@Override
332332
public void preprocessOpenAPI(OpenAPI openAPI) {
333+
super.preprocessOpenAPI(openAPI);
333334
final Paths paths = openAPI.getPaths();
334335
addRouterControllerExtensions(paths);
335336
final Map<String, SecurityScheme> securitySchemes = openAPI.getComponents() != null ? openAPI.getComponents().getSecuritySchemes() : null;

0 commit comments

Comments
 (0)