Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6a8769e
Fix OpenAPITools#5381
codermoderlife Mar 21, 2020
049359c
Fix OpenAPITools#5381
codermoderlife Mar 22, 2020
49f13eb
Fix OpenAPITools#5381
codermoderlife Mar 22, 2020
1a5a484
Fix OpenAPITools#5381
codermoderlife Mar 22, 2020
66a09d2
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Mar 22, 2020
48a1a4a
Fix OpenAPITools#5381
codermoderlife Mar 24, 2020
a811330
Fix OpenAPITools#5381
codermoderlife Mar 24, 2020
299cdb3
Fix OpenAPITools#5381
codermoderlife Mar 24, 2020
461cbc8
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Mar 24, 2020
dd0118d
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Mar 25, 2020
26a95f6
Fix OpenAPITools#5381
codermoderlife Mar 25, 2020
9af7db6
Fix OpenAPITools#5381
codermoderlife Mar 30, 2020
fbfd57d
Fix OpenAPITools#5381
codermoderlife Mar 21, 2020
bfab304
Fix OpenAPITools#5381
codermoderlife Mar 22, 2020
29003d8
Fix OpenAPITools#5381
codermoderlife Apr 1, 2020
d864831
Fix OpenAPITools#5381
codermoderlife Apr 1, 2020
6d54799
Fix OpenAPITools#5381
codermoderlife Apr 2, 2020
fe7fd56
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Feb 3, 2021
9b586fa
[Spring] codegen : oneOf support for spring (#5381)
codermoderlife Feb 3, 2021
07df40c
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Feb 4, 2021
15b362a
[Spring] codegen : oneOf support for spring (#5381) avoid npe
codermoderlife Feb 4, 2021
f0aeb8c
Merge branch 'master' of https://github.com/OpenAPITools/openapi-gene…
codermoderlife Jul 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ public void postProcessParameter(CodegenParameter parameter) {
//override with any special handling of the entire OpenAPI spec document
@SuppressWarnings("unused")
public void preprocessOpenAPI(OpenAPI openAPI) {
if (useOneOfInterfaces) {
if (useOneOfInterfaces && openAPI.getComponents() != null) {
Comment thread
alexsuperdev marked this conversation as resolved.
Outdated
// we process the openapi schema here to find oneOf schemas and create interface models for them
Map<String, Schema> schemas = new HashMap<String, Schema>(openAPI.getComponents().getSchemas());
if (schemas == null) {
Expand All @@ -733,11 +733,13 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
schemas.put(opId, requestSchema);
}
// process all response bodies
for (Map.Entry<String, ApiResponse> ar : op.getValue().getResponses().entrySet()) {
ApiResponse a = ModelUtils.getReferencedApiResponse(openAPI, ar.getValue());
Schema responseSchema = ModelUtils.getSchemaFromResponse(a);
if (responseSchema != null) {
schemas.put(opId + ar.getKey(), responseSchema);
if (op.getValue().getResponses() != null){
Comment thread
alexsuperdev marked this conversation as resolved.
Outdated
for (Map.Entry<String, ApiResponse> ar : op.getValue().getResponses().entrySet()) {
ApiResponse a = ModelUtils.getReferencedApiResponse(openAPI, ar.getValue());
Schema responseSchema = ModelUtils.getSchemaFromResponse(a);
if (responseSchema != null) {
schemas.put(opId + ar.getKey(), responseSchema);
}
}
}
}
Expand Down Expand Up @@ -5425,6 +5427,9 @@ public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, S
LOGGER.warn("codegenModel is null. Default to UNKNOWN_BASE_TYPE");
codegenModelName = "UNKNOWN_BASE_TYPE";
codegenModelDescription = "UNKNOWN_DESCRIPTION";
if (useOneOfInterfaces && templateDir.equals("JavaSpring")){
Comment thread
alexsuperdev marked this conversation as resolved.
Outdated
codegenModelName = codegenProperty.getComplexType()+"OneOf";
}
}

if (StringUtils.isEmpty(bodyParameterName)) {
Expand All @@ -5439,7 +5444,7 @@ public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, S
codegenParameter.description = codegenModelDescription;
imports.add(codegenParameter.baseType);

if (codegenProperty.complexType != null) {
if (codegenProperty.complexType != null && (useOneOfInterfaces && !templateDir.equals("JavaSpring"))) {
Comment thread
alexsuperdev marked this conversation as resolved.
Outdated
imports.add(codegenProperty.complexType);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ public void processOpts() {
}

super.processOpts();

useOneOfInterfaces = true;
// clear model and api doc template as this codegen
// does not support auto-generated markdown doc at the moment
//TODO: add doc templates
Expand Down Expand Up @@ -898,4 +898,16 @@ public void postProcessParameter(CodegenParameter p) {
}
}

}
@Override
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
Map<String, String> oneImport = new HashMap<String, String>() {{
put("import", importMapping.get(i));
}};
if (!imports.contains(oneImport)) {
imports.add(oneImport);
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import org.springframework.hateoas.RepresentationModel;
{{>enumOuterClass}}
{{/isEnum}}
{{^isEnum}}
{{>pojo}}
{{#vendorExtensions.x-is-one-of-interface}}{{>oneof_interface}}{{/vendorExtensions.x-is-one-of-interface}}{{^vendorExtensions.x-is-one-of-interface}}{{>pojo}}{{/vendorExtensions.x-is-one-of-interface}}
{{/isEnum}}
{{/model}}
{{/models}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>xmlAnnotation}}
public interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
Comment thread
alexsuperdev marked this conversation as resolved.
{{#discriminator}}
public {{propertyType}} {{propertyGetter}}();
{{/discriminator}}
}