Skip to content

NullPointerException in OpenAPIDeserializer.getHeader() after upgrading to 2.1.26 #2170

@bvo42

Description

@bvo42

Description

After upgrading from version 2.1.25 to 2.1.26, a NullPointerException occurs when parsing an OpenAPI definition. The error appears to be caused by a missing "description" field in a response header. Although "description" is optional according to the OpenAPI 3.0 specification, the parser tries to call .equals() on it unconditionally.

This issue did not occur with version 2.1.25.

Stacktrace

java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "value" is null
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getHeader(OpenAPIDeserializer.java:2249)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getHeaders(OpenAPIDeserializer.java:2183)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getResponse(OpenAPIDeserializer.java:3490)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getResponses(OpenAPIDeserializer.java:3440)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getOperation(OpenAPIDeserializer.java:3586)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getPathItem(OpenAPIDeserializer.java:1060)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getPathItems(OpenAPIDeserializer.java:904)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.getPaths(OpenAPIDeserializer.java:846)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.parseRoot(OpenAPIDeserializer.java:378)
	at io.swagger.v3.parser.util.OpenAPIDeserializer.deserialize(OpenAPIDeserializer.java:309)
	at io.swagger.v3.parser.OpenAPIV3Parser.parseJsonNode(OpenAPIV3Parser.java:147)
	at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:178)
	at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:97)
	at io.swagger.v3.parser.OpenAPIV3Parser.read(OpenAPIV3Parser.java:124)

Minimal Reproducible Example

Try to parse the following OpenAPI 3.0.1 JSON using swagger-parser 2.1.26:

{
  "openapi": "3.0.1",
  "info": {
    "title": "foo",
    "version": "foo"
  },
  "paths": {
    "/foo": {
      "post": {
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "required": true,
                "schema": {
                  "type": "string"
                },
                "style": "simple"
              }
            }
          }
        }
      }
    }
  }
}

Expected Behavior

The parser should handle headers without a "description" field gracefully and not throw a NullPointerException.

Workaround

Downgrading to 2.1.25 avoids the issue.

Environment

  • swagger-parser version: 2.1.26
  • Java version: OpenJDK 21
  • OS: Ubuntu 22.04

Thank you for your work!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions