forked from loafle/openapi-generator-original
Consider ComposedSchema in DefaultCodegen#fromRequestBody(..) (#358)
This commit is contained in:
parent
23ab5177b3
commit
8f4df45fb4
@ -4226,7 +4226,7 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
codegenProperty = codegenProperty.items;
|
||||
}
|
||||
|
||||
} else if (ModelUtils.isObjectSchema(schema)) {
|
||||
} else if (ModelUtils.isObjectSchema(schema) || ModelUtils.isComposedSchema(schema)) {
|
||||
CodegenModel codegenModel = null;
|
||||
if (StringUtils.isNotBlank(name)) {
|
||||
schema.setName(name);
|
||||
|
@ -19,6 +19,9 @@ package org.openapitools.codegen.java;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
import io.swagger.parser.OpenAPIParser;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.Operation;
|
||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||
import io.swagger.v3.oas.models.media.ComposedSchema;
|
||||
import io.swagger.v3.oas.models.media.Content;
|
||||
@ -28,6 +31,7 @@ import io.swagger.v3.oas.models.media.ObjectSchema;
|
||||
import io.swagger.v3.oas.models.media.Schema;
|
||||
import io.swagger.v3.oas.models.media.StringSchema;
|
||||
import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||
|
||||
import org.openapitools.codegen.CodegenConstants;
|
||||
@ -37,6 +41,7 @@ import org.openapitools.codegen.CodegenModelType;
|
||||
import org.openapitools.codegen.CodegenOperation;
|
||||
import org.openapitools.codegen.CodegenParameter;
|
||||
import org.openapitools.codegen.languages.JavaClientCodegen;
|
||||
import org.openapitools.codegen.utils.ModelUtils;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@ -305,6 +310,17 @@ public class JavaClientCodegenTest {
|
||||
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.zzzzzzz.mmmmm");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSchemaTypeWithComposedSchemaWithAllOf() {
|
||||
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/2_0/composed-allof.yaml", null, new ParseOptions()).getOpenAPI();
|
||||
final JavaClientCodegen codegen = new JavaClientCodegen();
|
||||
|
||||
Operation operation = openAPI.getPaths().get("/ping").getPost();
|
||||
CodegenOperation co = codegen.fromOperation("/ping", "POST", operation, ModelUtils.getSchemas(openAPI), openAPI);
|
||||
Assert.assertEquals(co.allParams.size(), 1);
|
||||
Assert.assertEquals(co.allParams.get(0).baseType, "MessageEventCoreWithTimeListEntries");
|
||||
}
|
||||
|
||||
private CodegenParameter createPathParam(String name) {
|
||||
CodegenParameter codegenParameter = createStringParam(name);
|
||||
codegenParameter.isPathParam = true;
|
||||
|
@ -0,0 +1,53 @@
|
||||
swagger: "2.0"
|
||||
info:
|
||||
version: "2"
|
||||
title: "Test API"
|
||||
basePath: "/xx2"
|
||||
consumes:
|
||||
- "application/json"
|
||||
produces:
|
||||
- "application/json"
|
||||
paths:
|
||||
/ping:
|
||||
post:
|
||||
tags:
|
||||
- Messaging
|
||||
summary: Add a message event to the given message calendar
|
||||
operationId: addMessageEventToMessageCalendar
|
||||
parameters:
|
||||
- in: body
|
||||
name: new-message-event
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/MessageEventCoreWithTimeListEntries"
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
definitions:
|
||||
MessageEventCoreWithTimeListEntries:
|
||||
type: object
|
||||
description: "Base of a message event with Time List entries"
|
||||
allOf:
|
||||
- $ref: "#/definitions/MessageEventCore"
|
||||
- type: object
|
||||
required:
|
||||
- timeListEntries
|
||||
properties:
|
||||
timeListEntries:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/TimeListEntry"
|
||||
MessageEventCore:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
message:
|
||||
type: string
|
||||
TimeListEntry:
|
||||
type: object
|
||||
properties:
|
||||
p1:
|
||||
type: string
|
||||
p2:
|
||||
type: string
|
Loading…
x
Reference in New Issue
Block a user