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.73k stars 6.56k forks source link

[BUG][kotlin-spring] Doesn't create valid model when inheritance is used ($allOf) #3587

Closed d0x closed 2 years ago

d0x commented 5 years ago
Description

When using inheritance, the generated code won't compile. It fails with this error:

'xxx' hides member of supertype 'YYY' and needs 'override' modifier

You can see it in this example:

data class Pet(
        @JsonProperty("name") val name: kotlin.String? = null,
        @JsonProperty("weight") val weight: java.math.BigDecimal? = null
                                 // ^^^^^^ 'weight' hides member of supertype 'Animal' and needs 'override' modifier
) : Animal {}
openapi-generator version

Generator Version 4.0.3 Spec Version 3.0.1

OpenAPI declaration file content or url
openapi: 3.0.1
info:
  title: example
  version: 1.0.0
paths:
  /test:
    get:
      responses:
        200:
          description: successful operation
components:
  schemas:
    Animal:
      type: object
      properties:
        weight:
          type: number
      discriminator:
        propertyName: animalType
      required:
        - animalType
    Pet:
      allOf:
        - $ref: "#/components/schemas/Animal"
        - type: object
          properties:
            name:
              type: string
Command line used for generation
openapi-generator generate -i myspec.yml -g kotlin-spring \
        -Dmodels \
        -Dapis \
        --additional-properties=interfaceOnly=true \
        --additional-properties=gradleBuildFile=false \
        --additional-properties=exceptionHandler=false \
        --additional-properties=sourceFolder=src/gen/kotlin
Steps to reproduce

Generate the spec above and check the Pet class.

Related issues/PRs

There is a similar issue which was fixed in 4.0.0.beta and openapi version 2. But it seems like openapi version 3 breaks it.

https://github.com/OpenAPITools/openapi-generator/issues/1205

auto-labeler[bot] commented 5 years ago

👍 Thanks for opening this issue! 🏷 I have applied any labels matching special text in your issue.

The team will review the labels and make any necessary changes.

eliezio commented 2 years ago

I tried to reproduce the given example and it seems it's already fixed for kotlin-spring generator v5.4.0. @d0x can you pls confirm?

d0x commented 2 years ago

Thanks! Seems to be fixed. I tried the steps to reproduce and it compiles well. 👍🏻