Example usage for org.springframework.mock.http.client.reactive MockClientHttpRequest setWriteHandler

List of usage examples for org.springframework.mock.http.client.reactive MockClientHttpRequest setWriteHandler

Introduction

In this page you can find the example usage for org.springframework.mock.http.client.reactive MockClientHttpRequest setWriteHandler.

Prototype

public void setWriteHandler(Function<Flux<DataBuffer>, Mono<Void>> writeHandler) 

Source Link

Document

Configure a custom handler for writing the request body.

Usage

From source file:org.springframework.test.web.reactive.server.HttpHandlerConnector.java

@Override
public Mono<ClientHttpResponse> connect(HttpMethod httpMethod, URI uri,
        Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {

    MonoProcessor<ClientHttpResponse> result = MonoProcessor.create();

    MockClientHttpRequest mockClientRequest = new MockClientHttpRequest(httpMethod, uri);
    MockServerHttpResponse mockServerResponse = new MockServerHttpResponse();

    mockClientRequest.setWriteHandler(requestBody -> {
        log("Invoking HttpHandler for ", httpMethod, uri);
        ServerHttpRequest mockServerRequest = adaptRequest(mockClientRequest, requestBody);
        ServerHttpResponse responseToUse = prepareResponse(mockServerResponse, mockServerRequest);
        this.handler.handle(mockServerRequest, responseToUse).subscribe(aVoid -> {
        }, result::onError);/*from   w ww .  j av  a2s.c  o m*/
        return Mono.empty();
    });

    mockServerResponse.setWriteHandler(responseBody -> {
        log("Creating client response for ", httpMethod, uri);
        result.onNext(adaptResponse(mockServerResponse, responseBody));
        return Mono.empty();
    });

    log("Writing client request for ", httpMethod, uri);
    requestCallback.apply(mockClientRequest).subscribe(aVoid -> {
    }, result::onError);

    return result;
}