Example usage for org.springframework.mock.http.server.reactive MockServerHttpResponse setWriteHandler

List of usage examples for org.springframework.mock.http.server.reactive MockServerHttpResponse setWriteHandler

Introduction

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

Prototype

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

Source Link

Document

Configure a custom handler to consume the response 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 w w .  ja v a2  s . 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;
}