openapi-generator icon indicating copy to clipboard operation
openapi-generator copied to clipboard

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

Open vicentepinto98 opened this issue 1 year ago • 0 comments

Bug Report Checklist

  • [x] Have you provided a full/minimal spec to reproduce the issue?
  • [x] Have you validated the input using an OpenAPI validator (example)?
  • [x] Have you tested with the latest master to confirm the issue still exists?
  • [x] Have you searched for related issues/PRs?
  • [x] What's the actual output vs expected output?
  • [ ] [Optional] Sponsorship to speed up the bug fix or feature request (example)
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

vicentepinto98 avatar Oct 17 '24 16:10 vicentepinto98