Class ClientResponseWrapper
- java.lang.Object
- org.springframework.web.reactive.function.client.support.ClientResponseWrapper
- All Implemented Interfaces:
ClientResponse
public class ClientResponseWrapper extends Object implements ClientResponse
Implementation of theClientResponse
interface that can be subclassed to adapt the request in aexchange filter function
. All methods default to calling through to the wrapped request.- Since:
- 5.0.5
- Author:
- Arjen Poutsma
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ClientResponseWrapper.HeadersWrapper
Implementation of theHeaders
interface that can be subclassed to adapt the headers in aexchange filter function
.Nested classes/interfaces inherited from interface org.springframework.web.reactive.function.client.ClientResponse
ClientResponse.Builder, ClientResponse.Headers
Constructor Summary
Constructors Constructor Description ClientResponseWrapper(ClientResponse delegate)
Create a newClientResponseWrapper
that wraps the given response.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> T
body(BodyExtractor<T,? super ClientHttpResponse> extractor)
Extract the body with the givenBodyExtractor
.<T> reactor.core.publisher.Flux<T>
bodyToFlux(Class<? extends T> elementClass)
Extract the body to aFlux
.<T> reactor.core.publisher.Flux<T>
bodyToFlux(ParameterizedTypeReference<T> elementTypeRef)
Extract the body to aFlux
.<T> reactor.core.publisher.Mono<T>
bodyToMono(Class<? extends T> elementClass)
Extract the body to aMono
.<T> reactor.core.publisher.Mono<T>
bodyToMono(ParameterizedTypeReference<T> elementTypeRef)
Extract the body to aMono
.MultiValueMap<String,ResponseCookie>
cookies()
Return the cookies of this response.reactor.core.publisher.Mono<WebClientResponseException>
createException()
Create aWebClientResponseException
that contains the response status, headers, body, and the originating request.ClientResponse.Headers
headers()
Return the headers of this response.String
logPrefix()
Return a log message prefix to use to correlate messages for this exchange.int
rawStatusCode()
Return the (potentially non-standard) status code of this response.reactor.core.publisher.Mono<Void>
releaseBody()
Release the body of this response.ClientResponse
response()
Return the wrapped request.HttpStatus
statusCode()
Return the HTTP status code as anHttpStatus
enum value.ExchangeStrategies
strategies()
Return the strategies used to convert the body of this response.reactor.core.publisher.Mono<ResponseEntity<Void>>
toBodilessEntity()
Return this response as a delayedResponseEntity
containing status and headers, but no body.<T> reactor.core.publisher.Mono<ResponseEntity<T>>
toEntity(Class<T> bodyType)
Return this response as a delayedResponseEntity
.<T> reactor.core.publisher.Mono<ResponseEntity<T>>
toEntity(ParameterizedTypeReference<T> bodyTypeReference)
Return this response as a delayedResponseEntity
.<T> reactor.core.publisher.Mono<ResponseEntity<List<T>>>
toEntityList(Class<T> elementClass)
Return this response as a delayed list ofResponseEntity
s.<T> reactor.core.publisher.Mono<ResponseEntity<List<T>>>
toEntityList(ParameterizedTypeReference<T> elementTypeRef)
Return this response as a delayed list ofResponseEntity
s.
Constructor Detail
ClientResponseWrapper
public ClientResponseWrapper(ClientResponse delegate)
Create a newClientResponseWrapper
that wraps the given response.- Parameters:
delegate
- the response to wrap
Method Detail
response
public ClientResponse response()
Return the wrapped request.
strategies
public ExchangeStrategies strategies()
Description copied from interface:ClientResponse
Return the strategies used to convert the body of this response.- Specified by:
strategies
in interfaceClientResponse
statusCode
public HttpStatus statusCode()
Description copied from interface:ClientResponse
Return the HTTP status code as anHttpStatus
enum value.- Specified by:
statusCode
in interfaceClientResponse
- Returns:
- the HTTP status as an HttpStatus enum value (never
null
) - See Also:
HttpStatus.valueOf(int)
rawStatusCode
public int rawStatusCode()
Description copied from interface:ClientResponse
Return the (potentially non-standard) status code of this response.- Specified by:
rawStatusCode
in interfaceClientResponse
- Returns:
- the HTTP status as an integer value
- See Also:
ClientResponse.statusCode()
,HttpStatus.resolve(int)
headers
public ClientResponse.Headers headers()
Description copied from interface:ClientResponse
Return the headers of this response.- Specified by:
headers
in interfaceClientResponse
cookies
public MultiValueMap<String,ResponseCookie> cookies()
Description copied from interface:ClientResponse
Return the cookies of this response.- Specified by:
cookies
in interfaceClientResponse
body
public <T> T body(BodyExtractor<T,? super ClientHttpResponse> extractor)
Description copied from interface:ClientResponse
Extract the body with the givenBodyExtractor
.- Specified by:
body
in interfaceClientResponse
- Type Parameters:
T
- the type of the body returned- Parameters:
extractor
- theBodyExtractor
that reads from the response- Returns:
- the extracted body
bodyToMono
public <T> reactor.core.publisher.Mono<T> bodyToMono(Class<? extends T> elementClass)
Description copied from interface:ClientResponse
Extract the body to aMono
.- Specified by:
bodyToMono
in interfaceClientResponse
- Type Parameters:
T
- the element type- Parameters:
elementClass
- the class of element in theMono
- Returns:
- a mono containing the body of the given type
T
bodyToMono
public <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> elementTypeRef)
Description copied from interface:ClientResponse
Extract the body to aMono
.- Specified by:
bodyToMono
in interfaceClientResponse
- Type Parameters:
T
- the element type- Parameters:
elementTypeRef
- the type reference of element in theMono
- Returns:
- a mono containing the body of the given type
T
bodyToFlux
public <T> reactor.core.publisher.Flux<T> bodyToFlux(Class<? extends T> elementClass)
Description copied from interface:ClientResponse
Extract the body to aFlux
.- Specified by:
bodyToFlux
in interfaceClientResponse
- Type Parameters:
T
- the element type- Parameters:
elementClass
- the class of elements in theFlux
- Returns:
- a flux containing the body of the given type
T
bodyToFlux
public <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> elementTypeRef)
Description copied from interface:ClientResponse
Extract the body to aFlux
.- Specified by:
bodyToFlux
in interfaceClientResponse
- Type Parameters:
T
- the element type- Parameters:
elementTypeRef
- the type reference of elements in theFlux
- Returns:
- a flux containing the body of the given type
T
releaseBody
public reactor.core.publisher.Mono<Void> releaseBody()
Description copied from interface:ClientResponse
Release the body of this response.- Specified by:
releaseBody
in interfaceClientResponse
- Returns:
- a completion signal
- See Also:
DataBufferUtils.release(DataBuffer)
toBodilessEntity
public reactor.core.publisher.Mono<ResponseEntity<Void>> toBodilessEntity()
Description copied from interface:ClientResponse
Return this response as a delayedResponseEntity
containing status and headers, but no body. Calling this method will release the body of the response.- Specified by:
toBodilessEntity
in interfaceClientResponse
- Returns:
Mono
with the bodilessResponseEntity
toEntity
public <T> reactor.core.publisher.Mono<ResponseEntity<T>> toEntity(Class<T> bodyType)
Description copied from interface:ClientResponse
Return this response as a delayedResponseEntity
.- Specified by:
toEntity
in interfaceClientResponse
- Type Parameters:
T
- response body type- Parameters:
bodyType
- the expected response body type- Returns:
Mono
with theResponseEntity
toEntity
public <T> reactor.core.publisher.Mono<ResponseEntity<T>> toEntity(ParameterizedTypeReference<T> bodyTypeReference)
Description copied from interface:ClientResponse
Return this response as a delayedResponseEntity
.- Specified by:
toEntity
in interfaceClientResponse
- Type Parameters:
T
- response body type- Parameters:
bodyTypeReference
- a type reference describing the expected response body type- Returns:
Mono
with theResponseEntity
toEntityList
public <T> reactor.core.publisher.Mono<ResponseEntity<List<T>>> toEntityList(Class<T> elementClass)
Description copied from interface:ClientResponse
Return this response as a delayed list ofResponseEntity
s.- Specified by:
toEntityList
in interfaceClientResponse
- Type Parameters:
T
- the type of elements in the list- Parameters:
elementClass
- the expected response body list element class- Returns:
Mono
with the list ofResponseEntity
s
toEntityList
public <T> reactor.core.publisher.Mono<ResponseEntity<List<T>>> toEntityList(ParameterizedTypeReference<T> elementTypeRef)
Description copied from interface:ClientResponse
Return this response as a delayed list ofResponseEntity
s.- Specified by:
toEntityList
in interfaceClientResponse
- Type Parameters:
T
- the type of elements in the list- Parameters:
elementTypeRef
- the expected response body list element reference type- Returns:
Mono
with the list ofResponseEntity
s
createException
public reactor.core.publisher.Mono<WebClientResponseException> createException()
Description copied from interface:ClientResponse
Create aWebClientResponseException
that contains the response status, headers, body, and the originating request.- Specified by:
createException
in interfaceClientResponse
- Returns:
- a
Mono
with the created exception
logPrefix
public String logPrefix()
Description copied from interface:ClientResponse
Return a log message prefix to use to correlate messages for this exchange.The prefix is based on ClientRequest.logPrefix(), which itself is based on the value of the
LOG_ID_ATTRIBUTE
request attribute, further surrounded with "[" and "]".- Specified by:
logPrefix
in interfaceClientResponse
- Returns:
- the log message prefix or an empty String if the
LOG_ID_ATTRIBUTE
is not set