Skip to content

[BUG] Generator creates invalid code on validated schema when an enum contains ~= #4069

@aidanhs

Description

@aidanhs

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • What's the version of OpenAPI Generator used?
  • Have you search for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Bounty to sponsor the fix (example)
Description

A schema for Jira validates but cannot be used for generation (crashing with "Please make sure that your schema is correct!"). This worked with the last 3.X.Y release, but I'd like to use 4.X.Y as it has some fixes for Rust bindings.

openapi-generator version

4.1.3

It's a regression that appears to have been present since 4.0. Before that did not have the same problem.

OpenAPI declaration file content or url

https://developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.json

Command line used for generation
java -jar openapi-generator-cli.jar generate -i jira-v3.swagger-v3.json -g rust -o abc
Steps to reproduce
$ cd $(mktemp -d)
$ VER=4.1.3 && wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/$VER/openapi-generator-cli-$VER.jar -O openapi-generator-cli.jar
[...]
$ curl -sSL https://developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.json > jira-v3.swagger-v3.json
$ java -jar openapi-generator-cli.jar validate -i jira-v3.swagger-v3.json --recommend
Validating spec (jira-v3.swagger-v3.json)
Warnings: 
        -Unused model: RichText
        -Unused model: JqlQueryUnitaryOperand
        -Unused model: FieldValueClause
        -Unused model: JqlQueryClauseTimePredicate
        -Unused model: avatarUrls
        -Unused model: ListOperand
        -Unused model: IconBean
        -Unused model: CompoundClause
        -Unused model: FieldChangedClause
        -Unused model: KeywordOperand
        -Unused model: JqlQueryClauseOperand
        -Unused model: ValueOperand
        -Unused model: FunctionOperand
        -Unused model: FieldWasClause

[info] Spec has 14 recommendation(s).
$ rm -rf abc && mkdir abc && java -jar openapi-generator-cli.jar generate -i jira-v3.swagger-v3.json -g rust -o abc
[main] INFO  o.o.c.ignore.CodegenIgnoreProcessor - No .openapi-generator-ignore file found.
[main] INFO  o.o.codegen.DefaultGenerator - OpenAPI Generator: rust (client)
[main] INFO  o.o.codegen.DefaultGenerator - Generator 'rust' is considered stable.
[main] WARN  o.o.codegen.utils.ModelUtils - Multiple schemas found in content, returning only the first one
[main] WARN  o.o.codegen.utils.ModelUtils - Multiple schemas found in content, returning only the first one
[main] WARN  o.o.codegen.utils.ModelUtils - Multiple schemas found in content, returning only the first one
[main] WARN  o.o.codegen.utils.ModelUtils - Multiple schemas found in content, returning only the first one
[main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: object
[main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: object
[main] INFO  o.o.codegen.DefaultGenerator - Model JqlQueryClause not generated since it's a free-form object
[main] INFO  o.o.codegen.DefaultGenerator - Model ConnectModule not generated since it's a free-form object
[main] INFO  o.o.codegen.DefaultGenerator - Model ConnectModules not generated since it's an alias to map (without property) and `generateAliasAsModel` is set to false (default)
[main] INFO  o.o.codegen.DefaultGenerator - Model ListWrapperCallbackApplicationRole not generated since it's a free-form object
Exception in thread "main" java.lang.RuntimeException: Could not process model 'FieldValueClause'.Please make sure that your schema is correct!
        at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:472)
        at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:923)
        at org.openapitools.codegen.cmd.Generate.run(Generate.java:416)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:60)
Caused by: java.lang.NullPointerException
        at org.openapitools.codegen.DefaultCodegen.updateCodegenPropertyEnum(DefaultCodegen.java:4304)
        at org.openapitools.codegen.DefaultCodegen.postProcessModelsEnum(DefaultCodegen.java:385)
        at org.openapitools.codegen.languages.RustClientCodegen.postProcessModels(RustClientCodegen.java:156)
        at org.openapitools.codegen.DefaultGenerator.processModels(DefaultGenerator.java:1233)
        at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:467)
        ... 3 more
Related issues/PRs

I see a number of issues mentioning updateCodegenPropertyEnum but nothing recent or relating to a crash, and a few mentioning "Please make sure that your schema is correct", but that seems to be a generic error.

Suggest a fix

I note that it's crashing on a model that is recommended for removal, so I'll try that and see if it helps.

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