Remove bodyWithType extension from WebFlux
Since there is no more clash with the new bodyValue method name. Closes gh-23523
This commit is contained in:
parent
14558844bc
commit
52976246ac
|
|
@ -35,13 +35,24 @@ import reactor.core.publisher.Mono
|
|||
* @author Sebastien Deleuze
|
||||
* @since 5.0
|
||||
*/
|
||||
@Deprecated("Use 'bodyWithType' instead.", replaceWith = ReplaceWith("bodyWithType(publisher)"))
|
||||
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
|
||||
inline fun <reified T : Any, S : Publisher<T>> RequestBodySpec.body(publisher: S): RequestHeadersSpec<*> =
|
||||
body(publisher, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [WebClient.RequestBodySpec.body] providing a `bodyWithType<T>(Any)` variant
|
||||
* Extension for [WebClient.RequestBodySpec.body] providing a `body(Flow<T>)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param flow the [Flow] to write to the request
|
||||
* @param <T> the type of the elements contained in the flow
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RequestBodySpec.body(flow: Flow<T>): RequestHeadersSpec<*> =
|
||||
body(flow, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [WebClient.RequestBodySpec.body] providing a `body<T>(Any)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param producer the producer to write to the request. This must be a
|
||||
|
|
@ -51,34 +62,9 @@ inline fun <reified T : Any, S : Publisher<T>> RequestBodySpec.body(publisher: S
|
|||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RequestBodySpec.bodyWithType(producer: Any): RequestHeadersSpec<*> =
|
||||
inline fun <reified T : Any> RequestBodySpec.body(producer: Any): RequestHeadersSpec<*> =
|
||||
body(producer, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [WebClient.RequestBodySpec.body] providing a `bodyWithType(Publisher<T>)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param publisher the [Publisher] to write to the request
|
||||
* @param <T> the type of the elements contained in the publisher
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RequestBodySpec.bodyWithType(publisher: Publisher<T>): RequestHeadersSpec<*> =
|
||||
body(publisher, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [WebClient.RequestBodySpec.body] providing a `bodyWithType(Flow<T>)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param flow the [Flow] to write to the request
|
||||
* @param <T> the type of the elements contained in the flow
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
@ExperimentalCoroutinesApi
|
||||
inline fun <reified T : Any> RequestBodySpec.bodyWithType(flow: Flow<T>): RequestHeadersSpec<*> =
|
||||
body(flow, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Coroutines variant of [WebClient.RequestHeadersSpec.exchange].
|
||||
*
|
||||
|
|
|
|||
|
|
@ -32,13 +32,12 @@ import reactor.core.publisher.Mono
|
|||
* @author Sebastien Deleuze
|
||||
* @since 5.0
|
||||
*/
|
||||
@Deprecated("Use 'bodyWithType' instead.", replaceWith = ReplaceWith("bodyWithType(publisher)"))
|
||||
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
|
||||
inline fun <reified T : Any> ServerResponse.BodyBuilder.body(publisher: Publisher<T>): Mono<ServerResponse> =
|
||||
body(publisher, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [ServerResponse.BodyBuilder.body] providing a `bodyWithType<T>(Any)` variant
|
||||
* Extension for [ServerResponse.BodyBuilder.body] providing a `body<T>(Any)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param producer the producer to write to the response. This must be a
|
||||
|
|
@ -48,21 +47,9 @@ inline fun <reified T : Any> ServerResponse.BodyBuilder.body(publisher: Publishe
|
|||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> ServerResponse.BodyBuilder.bodyWithType(producer: Any): Mono<ServerResponse> =
|
||||
inline fun <reified T : Any> ServerResponse.BodyBuilder.body(producer: Any): Mono<ServerResponse> =
|
||||
body(producer, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Extension for [ServerResponse.BodyBuilder.body] providing a `bodyWithType(Publisher<T>)` variant
|
||||
* leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
* @param publisher the [Publisher] to write to the response
|
||||
* @param <T> the type of the elements contained in the publisher
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> ServerResponse.BodyBuilder.bodyWithType(publisher: Publisher<T>): Mono<ServerResponse> =
|
||||
body(publisher, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ServerResponse.BodyBuilder.body] with an [Any] parameter.
|
||||
*
|
||||
|
|
@ -97,7 +84,7 @@ suspend inline fun <reified T : Any> ServerResponse.BodyBuilder.bodyAndAwait(flo
|
|||
* @author Sebastien Deleuze
|
||||
* @since 5.0
|
||||
*/
|
||||
@Deprecated("Use 'sse().bodyWithType(publisher)' instead.", replaceWith = ReplaceWith("sse().bodyWithType(publisher)"))
|
||||
@Deprecated("Use 'sse().body(publisher)' instead.", replaceWith = ReplaceWith("sse().body(publisher)"))
|
||||
inline fun <reified T : Any> ServerResponse.BodyBuilder.bodyToServerSentEvents(publisher: Publisher<T>): Mono<ServerResponse> =
|
||||
contentType(MediaType.TEXT_EVENT_STREAM).body(publisher, object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
|
|
|
|||
|
|
@ -43,23 +43,23 @@ class WebClientExtensionsTests {
|
|||
|
||||
|
||||
@Test
|
||||
fun `RequestBodySpec#bodyWithType with Publisher and reified type parameters`() {
|
||||
fun `RequestBodySpec#body with Publisher and reified type parameters`() {
|
||||
val body = mockk<Publisher<List<Foo>>>()
|
||||
requestBodySpec.bodyWithType(body)
|
||||
requestBodySpec.body(body)
|
||||
verify { requestBodySpec.body(body, object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `RequestBodySpec#body with Flow and reified type parameters`() {
|
||||
val body = mockk<Flow<List<Foo>>>()
|
||||
requestBodySpec.bodyWithType(body)
|
||||
requestBodySpec.body(body)
|
||||
verify { requestBodySpec.body(ofType<Any>(), object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `RequestBodySpec#body with CompletableFuture and reified type parameters`() {
|
||||
val body = mockk<CompletableFuture<List<Foo>>>()
|
||||
requestBodySpec.bodyWithType<List<Foo>>(body)
|
||||
requestBodySpec.body<List<Foo>>(body)
|
||||
verify { requestBodySpec.body(ofType<Any>(), object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,21 +45,21 @@ class ServerResponseExtensionsTests {
|
|||
@Test
|
||||
fun `BodyBuilder#body with Publisher and reified type parameters`() {
|
||||
val body = mockk<Publisher<List<Foo>>>()
|
||||
bodyBuilder.bodyWithType(body)
|
||||
bodyBuilder.body(body)
|
||||
verify { bodyBuilder.body(body, object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `BodyBuilder#body with CompletableFuture and reified type parameters`() {
|
||||
val body = mockk<CompletableFuture<List<Foo>>>()
|
||||
bodyBuilder.bodyWithType<List<Foo>>(body)
|
||||
bodyBuilder.body<List<Foo>>(body)
|
||||
verify { bodyBuilder.body(body, object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `BodyBuilder#body with Flowable and reified type parameters`() {
|
||||
val body = mockk<Flowable<List<Foo>>>()
|
||||
bodyBuilder.bodyWithType(body)
|
||||
bodyBuilder.body(body)
|
||||
verify { bodyBuilder.body(body, object : ParameterizedTypeReference<List<Foo>>() {}) }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -231,8 +231,8 @@ ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(person, Person.
|
|||
[source,kotlin,role="secondary"]
|
||||
.Kotlin
|
||||
----
|
||||
val person: Mono<Person> = ...
|
||||
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).bodyWithType<Person>(person)
|
||||
val person: Person = ...
|
||||
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).bodyValue(person)
|
||||
----
|
||||
|
||||
The following example shows how to build a 201 (CREATED) response with a `Location` header and no body:
|
||||
|
|
@ -262,7 +262,7 @@ ServerResponse.ok().hint(Jackson2CodecSupport.JSON_VIEW_HINT, MyJacksonView.clas
|
|||
[source,kotlin,role="secondary"]
|
||||
.Kotlin
|
||||
----
|
||||
ServerResponse.ok().hint(Jackson2CodecSupport.JSON_VIEW_HINT, MyJacksonView::class.java).bodyWithType(...)
|
||||
ServerResponse.ok().hint(Jackson2CodecSupport.JSON_VIEW_HINT, MyJacksonView::class.java).body(...)
|
||||
----
|
||||
====
|
||||
|
||||
|
|
|
|||
|
|
@ -497,7 +497,7 @@ like `Mono` or Kotlin Coroutines `Deferred` as the following example shows:
|
|||
client.post()
|
||||
.uri("/persons/{id}", id)
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.bodyWithType<Person>(personDeferred)
|
||||
.body<Person>(personDeferred)
|
||||
.retrieve()
|
||||
.awaitBody<Unit>()
|
||||
----
|
||||
|
|
@ -524,7 +524,7 @@ You can also have a stream of objects be encoded, as the following example shows
|
|||
client.post()
|
||||
.uri("/persons/{id}", id)
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.bodyWithType(people)
|
||||
.body(people)
|
||||
.retrieve()
|
||||
.awaitBody<Unit>()
|
||||
----
|
||||
|
|
|
|||
Loading…
Reference in New Issue