diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 25e921c0c04..8dedaa88c93 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -192,10 +192,20 @@ public class ModelUtils { if (operation.getResponses() != null) { for (ApiResponse r : operation.getResponses().values()) { ApiResponse apiResponse = getReferencedApiResponse(openAPI, r); - if (apiResponse != null && apiResponse.getContent() != null) { - for (Entry e : apiResponse.getContent().entrySet()) { - if (e.getValue().getSchema() != null) { - visitSchema(openAPI, e.getValue().getSchema(), e.getKey(), visitedSchemas, visitor); + if (apiResponse != null) { + if (apiResponse.getContent() != null) { + for (Entry e : apiResponse.getContent().entrySet()) { + if (e.getValue().getSchema() != null) { + visitSchema(openAPI, e.getValue().getSchema(), e.getKey(), visitedSchemas, visitor); + } + } + } + if (apiResponse.getHeaders() != null) { + for (Entry e : apiResponse.getHeaders().entrySet()) { + Header header = getReferencedHeader(openAPI, e.getValue()); + if (header.getSchema() != null) { + visitSchema(openAPI, header.getSchema(), e.getKey(), visitedSchemas, visitor); + } } } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java index 68cc10942c4..34532c35ad4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java @@ -37,7 +37,7 @@ public class ModelUtilsTest { public void testGetAllUsedSchemas() { final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/unusedSchemas.yaml"); List allUsedSchemas = ModelUtils.getAllUsedSchemas(openAPI); - Assert.assertEquals(allUsedSchemas.size(), 32); + Assert.assertEquals(allUsedSchemas.size(), 34); Assert.assertTrue(allUsedSchemas.contains("SomeObjShared"), "contains 'SomeObjShared'"); Assert.assertTrue(allUsedSchemas.contains("SomeObj1"), "contains 'UnusedObj1'"); @@ -71,6 +71,8 @@ public class ModelUtilsTest { Assert.assertTrue(allUsedSchemas.contains("PingDataOutput21"), "contains 'PingDataOutput21'"); Assert.assertTrue(allUsedSchemas.contains("SInput22"), "contains 'SInput22'"); Assert.assertTrue(allUsedSchemas.contains("SOutput22"), "contains 'SInput22'"); + Assert.assertTrue(allUsedSchemas.contains("SomeHeader23"), "contains 'SomeHeader23'"); + Assert.assertTrue(allUsedSchemas.contains("SomeHeader24"), "contains 'SomeHeader24'"); } @Test diff --git a/modules/openapi-generator/src/test/resources/3_0/unusedSchemas.yaml b/modules/openapi-generator/src/test/resources/3_0/unusedSchemas.yaml index 9e2179a2e11..7b09f13004c 100644 --- a/modules/openapi-generator/src/test/resources/3_0/unusedSchemas.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/unusedSchemas.yaml @@ -280,6 +280,27 @@ paths: callbacks: sharedCallback: $ref: "#/components/callbacks/sharedCallback22" + /some/p23: + post: + operationId: op23 + responses: + '2XX': + description: OK + headers: + x-app-info: + description: basic app info + style: simple + schema: + $ref: "#/components/schemas/SomeHeader23" + /some/p24: + post: + operationId: op24 + responses: + '2XX': + description: OK + headers: + x-app-info: + $ref: "#/components/headers/sharedHeader24" components: schemas: UnusedObj1: @@ -538,6 +559,11 @@ components: type: String response: type: String + SomeHeader23: + type: string + SomeHeader24: + type: integer + format: int64 SomeObjShared: type: object properties: @@ -607,4 +633,9 @@ components: application/json: schema: $ref: '#/components/schemas/SOutput22' - \ No newline at end of file + headers: + sharedHeader24: + description: basic header + style: simple + schema: + $ref: "#/components/schemas/SomeHeader24" \ No newline at end of file