From 354db2f3e62e3b0f3e7b6b493d67be6dd301b714 Mon Sep 17 00:00:00 2001 From: Akihito Nakano Date: Mon, 31 Dec 2018 18:00:28 +0900 Subject: [PATCH] Fix: Inline models can't be generated (#1768) * Add a test case * Fix that the inline models couldn't be flatten when "components" doesn't exist * Rename yaml file * Rename method name --- .../codegen/InlineModelResolver.java | 3 ++- .../codegen/InlineModelResolverTest.java | 12 ++++++++++ .../inline_request_body_no_components.yaml | 24 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/inline_request_body_no_components.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index fa0f7de00ce..56c2c95f8d9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -17,6 +17,7 @@ package org.openapitools.codegen; +import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.ArraySchema; @@ -49,7 +50,7 @@ public class InlineModelResolver { this.openapi = openapi; if (openapi.getComponents() == null) { - return; // There's nothing here + openapi.setComponents(new Components()); } if (openapi.getComponents().getSchemas() == null) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java index 683b4c7a245..041a4b340f6 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java @@ -24,7 +24,9 @@ import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; import io.swagger.v3.parser.core.models.ParseOptions; +import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.utils.ModelUtils; +import org.testng.Assert; import org.testng.annotations.Test; import java.util.HashMap; @@ -274,6 +276,16 @@ public class InlineModelResolverTest { assertTrue(model.getProperties().get("name") instanceof StringSchema); } + @Test + public void resolveInlineRequestBodyWhenNoComponents() { + OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/inline_request_body_no_components.yaml", null, new ParseOptions()).getOpenAPI(); + new InlineModelResolver().flatten(openAPI); + + assertNotNull(openAPI.getComponents()); + assertNotNull(openAPI.getComponents().getRequestBodies()); + } + + /* @Test public void resolveInlineArraySchemaWithTitle() { OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/inline_model_resolver.yaml", null, new ParseOptions()).getOpenAPI(); diff --git a/modules/openapi-generator/src/test/resources/3_0/inline_request_body_no_components.yaml b/modules/openapi-generator/src/test/resources/3_0/inline_request_body_no_components.yaml new file mode 100644 index 00000000000..f3eb163b51a --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/inline_request_body_no_components.yaml @@ -0,0 +1,24 @@ +openapi: 3.0.1 +info: + version: 1.0.0 + title: Example + license: + name: MIT +servers: + - url: http://api.example.xyz/v1 +paths: + /test1: + post: + requestBody: + description: test + content: + application/json: + schema: + type: object + properties: + name: + type: string + operationId: test1 + responses: + '200': + description: OK