forked from loafle/openapi-generator-original
[kotlin-client][jvm-spring-webclient] Fix metrics URI templating for WebClient (#21148)
Spring configures uriTemplate attribute and not generated code
This commit is contained in:
parent
e3db6a6257
commit
f9549479c9
@ -10,8 +10,6 @@ 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>> {
|
||||||
@ -40,10 +38,8 @@ private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"
|
|||||||
method(HttpMethod.valueOf(requestConfig.method.name))
|
method(HttpMethod.valueOf(requestConfig.method.name))
|
||||||
|
|
||||||
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
||||||
uri { builder ->
|
uri(requestConfig.path) { builder ->
|
||||||
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
|
|
||||||
builder
|
builder
|
||||||
.path(requestConfig.path)
|
|
||||||
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
||||||
.build(requestConfig.params)
|
.build(requestConfig.params)
|
||||||
}
|
}
|
||||||
@ -55,6 +51,7 @@ private val URI_TEMPLATE_ATTRIBUTE = WebClient::class.java.name + ".uriTemplate"
|
|||||||
when {
|
when {
|
||||||
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
||||||
val builder = MultipartBodyBuilder()
|
val builder = MultipartBodyBuilder()
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
||||||
if (part.body != null) {
|
if (part.body != null) {
|
||||||
val partBuilder = builder.part(name, part.body)
|
val partBuilder = builder.part(name, part.body)
|
||||||
|
@ -10,8 +10,6 @@ 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>> {
|
||||||
@ -40,10 +38,8 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
method(HttpMethod.valueOf(requestConfig.method.name))
|
method(HttpMethod.valueOf(requestConfig.method.name))
|
||||||
|
|
||||||
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
||||||
uri { builder ->
|
uri(requestConfig.path) { builder ->
|
||||||
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
|
|
||||||
builder
|
builder
|
||||||
.path(requestConfig.path)
|
|
||||||
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
||||||
.build(requestConfig.params)
|
.build(requestConfig.params)
|
||||||
}
|
}
|
||||||
@ -55,6 +51,7 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
when {
|
when {
|
||||||
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
||||||
val builder = MultipartBodyBuilder()
|
val builder = MultipartBodyBuilder()
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
||||||
if (part.body != null) {
|
if (part.body != null) {
|
||||||
val partBuilder = builder.part(name, part.body)
|
val partBuilder = builder.part(name, part.body)
|
||||||
|
@ -10,8 +10,6 @@ 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>> {
|
||||||
@ -40,10 +38,8 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
method(HttpMethod.valueOf(requestConfig.method.name))
|
method(HttpMethod.valueOf(requestConfig.method.name))
|
||||||
|
|
||||||
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
||||||
uri { builder ->
|
uri(requestConfig.path) { builder ->
|
||||||
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
|
|
||||||
builder
|
builder
|
||||||
.path(requestConfig.path)
|
|
||||||
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
||||||
.build(requestConfig.params)
|
.build(requestConfig.params)
|
||||||
}
|
}
|
||||||
@ -55,6 +51,7 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
when {
|
when {
|
||||||
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
||||||
val builder = MultipartBodyBuilder()
|
val builder = MultipartBodyBuilder()
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
||||||
if (part.body != null) {
|
if (part.body != null) {
|
||||||
val partBuilder = builder.part(name, part.body)
|
val partBuilder = builder.part(name, part.body)
|
||||||
|
@ -10,8 +10,6 @@ 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>> {
|
||||||
@ -40,10 +38,8 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
method(HttpMethod.valueOf(requestConfig.method.name))
|
method(HttpMethod.valueOf(requestConfig.method.name))
|
||||||
|
|
||||||
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
private fun <I> WebClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
|
||||||
uri { builder ->
|
uri(requestConfig.path) { builder ->
|
||||||
attribute(URI_TEMPLATE_ATTRIBUTE, requestConfig.path)
|
|
||||||
builder
|
builder
|
||||||
.path(requestConfig.path)
|
|
||||||
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
.queryParams(LinkedMultiValueMap(requestConfig.query))
|
||||||
.build(requestConfig.params)
|
.build(requestConfig.params)
|
||||||
}
|
}
|
||||||
@ -55,6 +51,7 @@ open class ApiClient(protected val client: WebClient) {
|
|||||||
when {
|
when {
|
||||||
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
requestConfig.headers[HttpHeaders.CONTENT_TYPE] == MediaType.MULTIPART_FORM_DATA_VALUE -> {
|
||||||
val builder = MultipartBodyBuilder()
|
val builder = MultipartBodyBuilder()
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
(requestConfig.body as Map<String, PartConfig<*>>).forEach { (name, part) ->
|
||||||
if (part.body != null) {
|
if (part.body != null) {
|
||||||
val partBuilder = builder.part(name, part.body)
|
val partBuilder = builder.part(name, part.body)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user