OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.95k stars 6.59k forks source link

[BUG][Go] Go model generated from allOf is unusable when $ref is a simple data type model #19900

Open vicentepinto98 opened 1 month ago

vicentepinto98 commented 1 month ago

Bug Report Checklist

Description

A component defined in the API specification which is defined as a allOf of a single $ref which is a simple data type model gets generated as an interface{} instead of the correct type.

The same happens if the model is nullable, in which case the field is defined as an unexistent NullableInterface type.

openapi-generator version
OpenAPI declaration file content or url

schema.components block

"AllOfComponent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SimpleStringModel"
          }
        ],
        "description": "The gateway of a network. If not specified the first ip of the network will be assigned as the gateway. If 'null' is sent, then the network doesn't have a gateway."
      },
"SimpleStringModel": {
        "type": "string"
      },      
"Body": {
        "properties": {
          "someField": {
            "$ref": "#/components/schemas/AllOfComponent"
          },
        "type": "object"
      },
Generation Details

Generation call: java -Dlog.level=${LOG_LEVEL} -jar ${PATH} generate \ --generator-name go \ --input-spec ${JSON_SPEC} \ --enable-post-process-file \ --global-property apis,models,modelTests=true,modelDocs=false,apiDocs=false,supportingFiles \ --additional-properties=isGoSubmodule=true,enumClassPrefix=true

Generated model:

type Body struct {
    AllOfComponent *interface{} `json:"allOfComponent,omitempty"`
}
Related issues/PRs

Might be related to #17534

Suggest a fix

The generated model should have the type of the simple data type model that is being referenced, in this case string

wing328 commented 3 weeks ago

thanks for reporting the issue.

i've filed https://github.com/OpenAPITools/openapi-generator/pull/19986 to fix the issue with a test

would appreciate if you can pull the branch and do a test locally to confirm it fixes the issues for your use cases as well