Skip to content

Conversation

@jmini
Copy link
Member

@jmini jmini commented Feb 18, 2019

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language. Change in the core: @OpenAPITools/generator-core-team

Description of the PR

Fixes #2127

Follow up of PR #1981

When you have a default value defined, in the outer enum case (where a seperated enum file is created) the default value was only working for the string type.

This PR address the issue.


Tested with a spec having this outer enum cases:

components:
  schemas:
    IntEnum:
      type: integer
      format: int32
      default: 2
      enum:
        - 1
        - 2
        - 3

    LongEnum:
      type: integer
      format: int64
      default: 30
      enum:
        - 20
        - 30
        - 40

    StringEnum:
      type: string
      default: "b"
      enum:
        - "c"
        - "b"
        - "a"

    EnumWithCustomName:
      type: integer
      format: int32
      default: 2
      enum:
        - 1
        - 2
      x-enum-varnames:
        - FOO
        - BAR

And following schema:

    ObjWithEnumProperties:
      type: object
      properties:
        iprop:
            $ref: "#/components/schemas/IntEnum"
        lprop:
            $ref: "#/components/schemas/LongEnum"
        sprop:
            $ref: "#/components/schemas/StringEnum"
        custom:
            $ref: "#/components/schemas/EnumWithCustomName"

The change is made in the core and I think that a lot of generators are impacted.
I have tested it for different java generators.
Setting a modelNamePrefix should also be considered during tests.

I recommend to try other generators/config as well.

@auto-labeler
Copy link

auto-labeler bot commented Feb 18, 2019

👍 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.

@fuj1g0n
Copy link
Contributor

fuj1g0n commented Feb 19, 2019

great work!
I installed your branch locally and confirmed it works perfectly :)

@wing328 wing328 added this to the 4.0.0 milestone Feb 19, 2019
@wing328
Copy link
Member

wing328 commented Feb 19, 2019

@jmini thanks for the PR 👍

@fujigon thanks for testing the fix.

@wing328 wing328 merged commit fda867e into OpenAPITools:master Feb 19, 2019
jimschubert added a commit that referenced this pull request Feb 23, 2019
* master: (40 commits)
  [Python] remove default value from being fallback to example (#2213)
  Add petstore integration tests to Ruby OAS3 client (#2211)
  Gradle - make GenerateTask properties optional (#2185)
  skip bats installation (#2198)
  Something in the dependencies changed. This switch is no longer needed. (#1850)
  Use oauth token for basic bearer auth in Rust. (#2161)
  Fix missing nullable (#2189)
  Enable error handling in Java WebClient library, fixes #1243 (#1244)
  [core] fix referenced enum case (#2175)
  rest-template: allow array parameters in path using collectionFormat (#2177)
  update go petstore samples
  Fix string types for cpprestsdk client generator (#1676)
  update kotline samples
  Remove API Key Authentication code for go when cookie is used. (#1601)
  changed the package install instructions to install the .tgz package … (#1989)
  okhttp-gson: allow array parameters in path using collectionFormat (#2137)
  [Ruby] Fix regualr expression in error message (#2069) (#2139)
  [kotlin][client] bytearray conversion (#2166)
  [rust-server] Added client documentation to rust-server (#2159)
  [Java] Getter/Setter naming convention not followed in generated models (#2095)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG][Java] default value in referenced Enum produces corrupted code

3 participants