micronaut-projects / micronaut-gradle-plugin

A Gradle Plugin for Micronaut
Apache License 2.0
65 stars 43 forks source link

Openapi Kotlin Code Gen results in invalid escape of properties named "data" #972

Closed scprek closed 6 months ago

scprek commented 6 months ago

moved issue to https://github.com/micronaut-projects/micronaut-openapi/issues/1499

Expected Behavior

/**
 * CreateUserResponse
 *
 * @param data
 */
@Serdeable
@JsonPropertyOrder(
        CreateUserResponse.JSON_PROPERTY_DATA
)
@Generated("io.micronaut.openapi.generator.KotlinMicronautClientCodegen")
data class CreateUserResponse (
    @field:NotNull
    @field:Valid
    @field:JsonProperty(JSON_PROPERTY_DATA)
    var data: String,
) {

    companion object {

        const val JSON_PROPERTY_DATA = "data"
    }
}

Actual Behaviour

/**
 * CreateUserResponse
 *
 * @param `data`
 */
@Serdeable
@JsonPropertyOrder(
        CreateUserResponse.JSON_PROPERTY_`_DATA`
)
@Generated("io.micronaut.openapi.generator.KotlinMicronautClientCodegen")
data class CreateUserResponse (
    @field:NotNull
    @field:JsonProperty(JSON_PROPERTY_`_DATA`)
    var `data`: String,
) {

    companion object {

        const val JSON_PROPERTY_`_DATA` = "data"
    }
}

Steps To Reproduce

So I want to generate clients for my app for others to use, this means I need to leverage micronaut-openapi to generate the spec and then run the generateClientOpenApiModels task. I wish there was just a direct from code to Client JAR I can publish, but it doesn't seem so.

build.gradle.kts

id("io.micronaut.openapi") version "4.3.5"

micronaut {
    openapi {
        client(file("test-app-0.2.0.yml")) {
            lang.set("kotlin")
        }
    }
}

CreateUserRespnose.kt

data class CreateUserResponse(val data: String)

:kaptKotlin generated spec portion

components:
  schemas:
    CreateUserResponse:
      required:
      - data
      type: object
      properties:
        data:
          type: string

./gradlew generateClientOpenApiModels

Environment Information

Example Application

No response

Version

4.3.4

scprek commented 6 months ago

I wonder if this is an issue with all reserved keywords?

scprek commented 6 months ago

Moved issue to https://github.com/micronaut-projects/micronaut-openapi/issues/1499