Skip to content

[BUG] Presence of path parameter in parent reference triggers NPE while processing examples #21409

Open
@clone1612

Description

@clone1612

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
    • Expected: code is generated without any issues
    • Actual: a NullPointerException is thrown during generation
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

After upgrading from v7.12.0 to v7.13.0 of openapi-generator-cli code generation of one of our OpenAPIs throws the following exception:

Exception: Cannot invoke "java.util.Map.get(Object)" because "actualComponentsExamples" is null
        at org.openapitools.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:1606)
        at org.openapitools.codegen.DefaultGenerator.processPaths(DefaultGenerator.java:1474)
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:663)
        at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:1296)
        at org.openapitools.codegen.cmd.Generate.execute(Generate.java:535)
        at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "actualComponentsExamples" is null
        at org.openapitools.codegen.utils.ExamplesUtils.unaliasExamples(ExamplesUtils.java:75)
        at org.openapitools.codegen.DefaultCodegen.unaliasExamples(DefaultCodegen.java:2355)
        at org.openapitools.codegen.DefaultCodegen.fromResponse(DefaultCodegen.java:5028)
        at org.openapitools.codegen.DefaultCodegen.fromOperation(DefaultCodegen.java:4685)
        at org.openapitools.codegen.languages.AbstractJavaCodegen.fromOperation(AbstractJavaCodegen.java:2225)
        at org.openapitools.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:1574)
        ... 6 more

It's not related to a particular spec, I've tested with 2 different languages (jaxrs-spec and go) and both gave the same exception. While creating the reproducer I noticed that removing the path parameter from the operation path, and thus also from its reference, made the NPE disappear:

So the following throws the NPE:

  /reproducers/{id}:
    $ref: "operations.yaml#/paths/~1reproducers~1{id}"

but this doesn't:

  /reproducers:
    $ref: "operations.yaml#/paths/~1reproducers"
openapi-generator version
  • NOK: v7.13.0
  • OK: v7.12.0
OpenAPI declaration file content or url

https://gist.github.com/clone1612/e9ca124ca323843d0175c67a4890d5ee

Generation Details
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli:latest generate -i /local/reproducer.yaml -g jaxrs-spec -o /local/out/jaxrs-spec      
Steps to reproduce
  1. Check out the linked gist and make sure all 3 files are located within the same directory
  2. Run the docker cli command
Related issues/PRs

The ExampleUtils class that throws the NPE was introduced in #20933 so might be related to that PR

Suggest a fix

/

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions