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.44k stars 6.49k forks source link

[BUG] [kotlin-spring] generator double-quotes stringy default query parameters #9904

Open pilzm opened 3 years ago

pilzm commented 3 years ago
Description

When specifying a stringy default value for a query parameter, the RequestParam annotation is generated with a duplicate set of quotes. This causes an error at compile time.

      parameters:
        - in: query
          name: sortBy
          schema:
            type: string
            default: id
@RequestParam(value = "sortBy", required = false, defaultValue=""id"")
openapi-generator version

This is a regression - the output in 5.0.0 was as expected,

@RequestParam(value = "sortBy", required = false, defaultValue="id")

while 5.1.1 (and 5.2.0-SNAPSHOT) generate the following

@RequestParam(value = "sortBy", required = false, defaultValue=""id"")
OpenAPI declaration file content or url

OpenAPI file:

openapi: 3.0.3
info:
  title: Reproducer
  version: "1.0"
servers:
  - url: http://example.org
paths:
  "/":
    get:
      parameters:
        - in: query
          name: sortBy
          schema:
            type: string
            default: id
      responses:
        200:
          description: "A response"
Generation Details

Command to generate faulty code: openapi-generator-cli version-manager set 5.1.1 openapi-generator-cli generate -i default-params.yaml -o default-params_5.1.1/ -g kotlin-spring Command to generate working code: openapi-generator-cli version-manager set 5.0.0 openapi-generator-cli generate -i default-params.yaml -o default-params_5.0.0/ -g kotlin-spring

Steps to reproduce
openapi-generator-cli version-manager set 5.1.1
openapi-generator-cli generate -i default-params.yaml -o default-params_5.1.1/ -g kotlin-spring

openapi-generator-cli version-manager set 5.0.0
openapi-generator-cli generate -i default-params.yaml -o default-params_5.0.0/ -g kotlin-spring

diff default-params_5.0.0/src/main/kotlin/org/openapitools/api/DefaultApi.kt default-params_5.1.1/src/main/kotlin/org/openapitools/api/DefaultApi.kt
<     fun rootGet( @RequestParam(value = "sortBy", required = false, defaultValue="id") sortBy: kotlin.String
---
>     fun rootGet( @RequestParam(value = "sortBy", required = false, defaultValue=""id"") sortBy: kotlin.String
Related issues/PRs

Same issue as back in #540 Maybe caused by #8577, but that PR targeted Java.

Suggest a fix

The fix might be in the same place as #5776, but I'm not sure how many kotlin generators are really affected by this

JuanMorenoS commented 2 years ago

This bug is still present in version 5.3.0!

erickvieira commented 2 years ago

v5.3.1 also still having this bug

bamapookie commented 2 years ago

5.4.0 still has this bug.

paloliska commented 1 year ago

6.3.0 has subvariant of this bug: if default value is defined as empty string in openapi.yaml:

default: ""

generator generates following:

@Default("""")

but should be

@Default("")