diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java index fdd2249c00cb..78cb4685dfd4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java @@ -356,6 +356,7 @@ protected void normalize() { normalizeComponentsSecuritySchemes(); normalizeComponentsSchemas(); normalizeComponentsResponses(); + normalizeComponentsHeaders(); } /** @@ -558,8 +559,21 @@ protected void normalizeHeaders(Map headers) { for (String headerKey : headers.keySet()) { Header h = headers.get(headerKey); - Schema updatedHeader = normalizeSchema(h.getSchema(), new HashSet<>()); - h.setSchema(updatedHeader); + if (h.getSchema() != null) { // not a $ref header + // example of header class + // description: null + // required: null + // deprecated: null + // style: null + // explode: null + // schema: null + // examples: null + // example: null + // content: null + // $ref: #/components/headers/Location + Schema updatedHeader = normalizeSchema(h.getSchema(), new HashSet<>()); + h.setSchema(updatedHeader); + } } } @@ -638,6 +652,18 @@ protected void normalizeComponentsResponses() { } } + /** + * Normalizes schemas in component's headers. + */ + protected void normalizeComponentsHeaders() { + Map headers = openAPI.getComponents().getHeaders(); + if (headers == null) { + return; + } + + normalizeHeaders(headers); + } + /** * Auto fix a self referencing schema using any type to replace the self-referencing sub-item. *