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