[BUG][Kotlin][WebClient] ApiClient is not compatible with spring-web 6 Observation API (#21020)

This commit is contained in:
NavruzshoevDaniel 2025-04-16 10:25:22 +03:00 committed by GitHub
parent a94b8f90ca
commit 7a57b80955
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 0 deletions

View File

@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder
import org.springframework.util.LinkedMultiValueMap import org.springframework.util.LinkedMultiValueMap
import reactor.core.publisher.Mono 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) { {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(protected val client: WebClient) {
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> { protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
@ -39,6 +41,7 @@ import reactor.core.publisher.Mono
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) = private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
uri { builder -> uri { builder ->
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
builder builder
.path(requestConfig.path) .path(requestConfig.path)
.queryParams(LinkedMultiValueMap(requestConfig.query)) .queryParams(LinkedMultiValueMap(requestConfig.query))

View File

@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder
import org.springframework.util.LinkedMultiValueMap import org.springframework.util.LinkedMultiValueMap
import reactor.core.publisher.Mono import reactor.core.publisher.Mono
private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate";
open class ApiClient(protected val client: WebClient) { open class ApiClient(protected val client: WebClient) {
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> { protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) {
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) = private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
uri { builder -> uri { builder ->
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
builder builder
.path(requestConfig.path) .path(requestConfig.path)
.queryParams(LinkedMultiValueMap(requestConfig.query)) .queryParams(LinkedMultiValueMap(requestConfig.query))

View File

@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder
import org.springframework.util.LinkedMultiValueMap import org.springframework.util.LinkedMultiValueMap
import reactor.core.publisher.Mono import reactor.core.publisher.Mono
private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate";
open class ApiClient(protected val client: WebClient) { open class ApiClient(protected val client: WebClient) {
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> { protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) {
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) = private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
uri { builder -> uri { builder ->
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
builder builder
.path(requestConfig.path) .path(requestConfig.path)
.queryParams(LinkedMultiValueMap(requestConfig.query)) .queryParams(LinkedMultiValueMap(requestConfig.query))

View File

@ -10,6 +10,8 @@ import org.springframework.http.client.MultipartBodyBuilder
import org.springframework.util.LinkedMultiValueMap import org.springframework.util.LinkedMultiValueMap
import reactor.core.publisher.Mono import reactor.core.publisher.Mono
private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate";
open class ApiClient(protected val client: WebClient) { open class ApiClient(protected val client: WebClient) {
protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> { protected inline fun <reified I : Any, reified T: Any?> request(requestConfig: RequestConfig<I>): Mono<ResponseEntity<T>> {
@ -39,6 +41,7 @@ open class ApiClient(protected val client: WebClient) {
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) = private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
uri { builder -> uri { builder ->
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
builder builder
.path(requestConfig.path) .path(requestConfig.path)
.queryParams(LinkedMultiValueMap(requestConfig.query)) .queryParams(LinkedMultiValueMap(requestConfig.query))