Coder Social home page Coder Social logo

Comments (2)

andrewfg avatar andrewfg commented on June 20, 2024

The issue occurs when a YAML DTO extends another DTO as follows where TadoModeTerminationCondition implements allOf the fields of OverlayTerminationCondition. CodeGen v2.3.1 generates Java code in which the child DTO does NOT include the same fields as the parent DTO (since they are already inherently in the parent). By contrast CodeGen v2.4.41 generates code where the child DTO has fields that DUPLICATE the same fields in the parent. Which is what causes the GSON JSON deserializer to fall over..

================ YAML Definition ================

OverlayTerminationCondition:
    type: object
    discriminator: type
    properties:
      type:
        $ref: "#/definitions/OverlayTerminationConditionType"
      projectedExpiry:
        description: |
          [ISO8601 datetime](https://en.wikipedia.org/wiki/ISO_8601). E.g. `2015-09-28T15:03:20Z` with second precision.
          Only relevant when receiving an overlay, ignored when overlay is sent to the server. Indicates the expected time of
          termination for this overlay, if no app user moves. `null` means that the overlay never expires (by itself, unless manully removed).
        type: string
        format: date-time
        readOnly: true
    required:
    - type

TadoModeTerminationCondition:
    description: The overlay terminates when the tado mode changes or when the setting (power, temperature, ...) of the underlying block schedule changes (or when removed manually).
    x-discriminator-value: TADO_MODE
    allOf:
    - $ref: "#/definitions/OverlayTerminationCondition"

================ Output of Swagger CodeGen v2.3.1 ================

public class OverlayTerminationCondition  {
  @SerializedName("type")
  private OverlayTerminationConditionType type = null;

  @SerializedName("projectedExpiry")
  private OffsetDateTime projectedExpiry = null;

  ... methods
}


public class TadoModeTerminationCondition extends OverlayTerminationCondition  {

  .. inherited methods all annotated with @Override
}

================ Output of Swagger CodeGen v2.4.41 ================

public class OverlayTerminationCondition  {
  @SerializedName("type")
  private OverlayTerminationConditionType type = null;

  @SerializedName("projectedExpiry")
  private OffsetDateTime projectedExpiry = null;

  ... methods
}


public class TadoModeTerminationCondition extends OverlayTerminationCondition  {
  @SerializedName("type")
  private OverlayTerminationConditionType type = null;

  @SerializedName("projectedExpiry")
  private OffsetDateTime projectedExpiry = null;

  .. inherited methods all annotated with @Override
}

from swagger-codegen.

andrewfg avatar andrewfg commented on June 20, 2024

^
From deep Googling one hypothesis is the issue may be related to supportsInheritance. => Does anyone have thought on this? And is so, how would I set a different value of that property for the Swagger Maven plugin in the OpenHAB pom.xml file?

from swagger-codegen.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.