From 7a57b8095552b50bdc6f565d5c9930a38ba247a6 Mon Sep 17 00:00:00 2001 From: NavruzshoevDaniel Date: Wed, 16 Apr 2025 10:25:22 +0300 Subject: [PATCH] [BUG][Kotlin][WebClient] ApiClient is not compatible with spring-web 6 Observation API (#21020) --- .../jvm-spring-webclient/infrastructure/ApiClient.kt.mustache | 3 +++ .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 3 +++ .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 3 +++ .../kotlin/org/openapitools/client/infrastructure/ApiClient.kt | 3 +++ 4 files changed, 12 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-webclient/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-webclient/infrastructure/ApiClient.kt.mustache index 7417df0106e..10db61bdb74 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-webclient/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-webclient/infrastructure/ApiClient.kt.mustache @@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder import org.springframework.util.LinkedMultiValueMap import reactor.core.publisher.Mono +private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"; + {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(protected val client: WebClient) { protected inline fun request(requestConfig: RequestConfig): Mono> { @@ -39,6 +41,7 @@ import reactor.core.publisher.Mono private fun WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = uri { builder -> + attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path) builder .path(requestConfig.path) .queryParams(LinkedMultiValueMap(requestConfig.query)) diff --git a/samples/client/echo_api/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/echo_api/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index dd9cf519efc..224822246c0 100644 --- a/samples/client/echo_api/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/echo_api/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder import org.springframework.util.LinkedMultiValueMap import reactor.core.publisher.Mono +private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"; + open class ApiClient(protected val client: WebClient) { protected inline fun request(requestConfig: RequestConfig): Mono> { @@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) { private fun WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = uri { builder -> + attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path) builder .path(requestConfig.path) .queryParams(LinkedMultiValueMap(requestConfig.query)) diff --git a/samples/client/petstore/kotlin-jvm-spring-2-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-spring-2-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index dd9cf519efc..224822246c0 100644 --- a/samples/client/petstore/kotlin-jvm-spring-2-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-spring-2-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder import org.springframework.util.LinkedMultiValueMap import reactor.core.publisher.Mono +private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"; + open class ApiClient(protected val client: WebClient) { protected inline fun request(requestConfig: RequestConfig): Mono> { @@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) { private fun WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = uri { builder -> + attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path) builder .path(requestConfig.path) .queryParams(LinkedMultiValueMap(requestConfig.query)) diff --git a/samples/client/petstore/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index dd9cf519efc..224822246c0 100644 --- a/samples/client/petstore/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-spring-3-webclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder import org.springframework.util.LinkedMultiValueMap import reactor.core.publisher.Mono +private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"; + open class ApiClient(protected val client: WebClient) { protected inline fun request(requestConfig: RequestConfig): Mono> { @@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) { private fun WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = uri { builder -> + attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path) builder .path(requestConfig.path) .queryParams(LinkedMultiValueMap(requestConfig.query))