swagger-api/swagger-codegen-generators

Generator fails on null enum choice

Tavh opened this issue · 0 comments

Tavh commented

When running the generator on a schema that contains a null enum option, we get an exception:

  Exception: Cannot invoke "java.lang.Integer.toString()" because "i" is null
	at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:989)
	at io.swagger.codegen.v3.DefaultGenerator.processPaths(DefaultGenerator.java:889)
	at io.swagger.codegen.v3.DefaultGenerator.generateApis(DefaultGenerator.java:484)
	at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:796)
	at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:388)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.toString()" because "i" is null
	at io.swagger.codegen.v3.generators.DefaultCodegenConfig.processPropertySchemaTypes(DefaultCodegenConfig.java:1666)
	at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromProperty(DefaultCodegenConfig.java:1587)
	at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromParameter(DefaultCodegenConfig.java:2530)
	at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromOperation(DefaultCodegenConfig.java:2237)
	at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:965)
	... 5 more

This occurs on enums like:

...
        schema:
          type: string
          nullable: true
          enum:
          - ''
          - AWS
          - AZURE
          - GCP
          - KUBE
          - null
          - OCI
          - github
          - gitlab
 ...

The suggested resolution is adding a null check in the problematic function:

DefaultCodegenConfig.java:processPropertySchemaTypes:1663

for(Integer i : _enum) {
    String stringifiedEnum = null;
    if (i != null) {
        stringifiedEnum = i.toString();            
    }
    codegenProperty._enum.add(stringifiedEnum);
}