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;
|
codegenProperty = codegenProperty.items;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (ModelUtils.isObjectSchema(schema)) {
|
} else if (ModelUtils.isObjectSchema(schema) || ModelUtils.isComposedSchema(schema)) {
|
||||||
CodegenModel codegenModel = null;
|
CodegenModel codegenModel = null;
|
||||||
if (StringUtils.isNotBlank(name)) {
|
if (StringUtils.isNotBlank(name)) {
|
||||||
schema.setName(name);
|
schema.setName(name);
|
||||||
|
@ -19,6 +19,9 @@ package org.openapitools.codegen.java;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
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.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.ComposedSchema;
|
import io.swagger.v3.oas.models.media.ComposedSchema;
|
||||||
import io.swagger.v3.oas.models.media.Content;
|
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.Schema;
|
||||||
import io.swagger.v3.oas.models.media.StringSchema;
|
import io.swagger.v3.oas.models.media.StringSchema;
|
||||||
import io.swagger.v3.oas.models.parameters.RequestBody;
|
import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||||
|
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||||
|
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
@ -37,6 +41,7 @@ import org.openapitools.codegen.CodegenModelType;
|
|||||||
import org.openapitools.codegen.CodegenOperation;
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
import org.openapitools.codegen.CodegenParameter;
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
import org.openapitools.codegen.languages.JavaClientCodegen;
|
import org.openapitools.codegen.languages.JavaClientCodegen;
|
||||||
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
@ -305,6 +310,17 @@ public class JavaClientCodegenTest {
|
|||||||
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.zzzzzzz.mmmmm");
|
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) {
|
private CodegenParameter createPathParam(String name) {
|
||||||
CodegenParameter codegenParameter = createStringParam(name);
|
CodegenParameter codegenParameter = createStringParam(name);
|
||||||
codegenParameter.isPathParam = true;
|
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