Skip to content

Model not generated with the right type (allOf) #582

@JFCote

Description

@JFCote
Description

A member of a model is not using the model type requested by the spec. Please check the example for a better explanation

openapi-generator version

Master (3.1.1-SNAPSHOT)

OpenAPI declaration file content or url

This is a self contained file that reproduce the issue

swagger: "2.0"
info:
  description: "dfsdfsdfs"
  version: "1.0.0"
  title: "Swagger Petstore"
  termsOfService: "http://swagger.io/terms/"
  contact:
    email: "apiteam@swagger.io"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
host: "petstore.swagger.io"
basePath: "/v2"
schemes:
- "https"
- "http"
paths:
  /lifecycles:
    put:
      tags:
        - Device
      summary: xxxxxxx
      operationId: editDeviceLifecycles
      parameters:
      - in: body
        name: device-lifecycle-update-info
        required: true
        schema:
          $ref: "#/definitions/DeviceLifecycleCore"
      responses:
        200:
          description: OK
          schema:
            $ref: "#/definitions/DeviceLifecycleCore"
definitions:
  DeviceLifecycleCore:
    type: object
    description: "DeviceLifecycleCore"
    properties:
      aaa:
        type: string
        description: "aaa"
      bbb:
        type: string
        description: "bbb"
      ccc:
        type: string
        description: "ccc"
      returnSoftwareStatus:
        $ref: "#/definitions/DeviceLifecycleStatus"
  DeviceLifecycleStatus:
    type: object
    description: "DeviceLifecycleStatus"
    allOf:
      - $ref: "#/definitions/DeviceLifecycleStatusCore"
      - type: object
        required:
          - id
        properties:
          id:
            type: integer
            format: int64
            description: "Id associated with the status"
            example: 123
  DeviceLifecycleStatusCore:
    type: object
    description: "DeviceLifecycleStatusCore"
    properties:
      name:
        type: string
        description: "Name"
      details:
        type: string
        description: "Any additional information needed for the status"
        example: "Something is wrong"

As you can see returnSoftwareStatus is supposed to be of type DeviceLifecycleStatus. If you look in the generated code, you will see that it is of type DeviceLifecycleStatusCore instead:

public DeviceLifecycleCore returnSoftwareStatus(DeviceLifecycleStatusCore returnSoftwareStatus) {
    this.returnSoftwareStatus = returnSoftwareStatus;
    return this;
  }

   /**
   * DeviceLifecycleStatus
   * @return returnSoftwareStatus
  **/
  @Valid
  public DeviceLifecycleStatusCore getReturnSoftwareStatus() {
    return returnSoftwareStatus;
  }

  public void setReturnSoftwareStatus(DeviceLifecycleStatusCore returnSoftwareStatus) {
    this.returnSoftwareStatus = returnSoftwareStatus;
  }
Command line used for generation

java -jar openapi-generator-cli.jar generate -i ./swagger.yaml --generator-name java-play-framework -o generatedServer -DhideGenerationTimestamp=true,booleanGetterPrefix=is

Steps to reproduce

Just run the command above

Related issues/PRs

None

Suggest a fix/enhancement

?

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