Consumer methods for WebHttpHandlerBuilder

Replace the more limited List-based methods to add filtes and exception
handlers with Consumer<List<?>> variants.
This commit is contained in:
Rossen Stoyanchev
2017-06-23 07:12:10 -04:00
parent 782c595cf7
commit c37c59f578
7 changed files with 32 additions and 55 deletions

View File

@@ -51,23 +51,20 @@ abstract class AbstractMockServerSpec<B extends WebTestClient.MockServerSpec<B>>
@Override
public WebTestClient.Builder configureClient() {
WebHttpHandlerBuilder builder = initHttpHandlerBuilder();
filtersInReverse().forEach(builder::prependFilter);
builder.filters(currentFilters -> {
List<WebFilter> toPrepend = new ArrayList<>(this.filters);
Collections.reverse(toPrepend);
toPrepend.forEach(filter -> currentFilters.add(0, filter));
});
return new DefaultWebTestClientBuilder(builder.build());
}
/**
* Sub-classes to create the {@code WebHttpHandlerBuilder} to use.
* Sub-classes must create an {@code WebHttpHandlerBuilder} that will then
* be used to create the HttpHandler for the mock server.
*/
protected abstract WebHttpHandlerBuilder initHttpHandlerBuilder();
/**
* Return the filters in reverse order for pre-pending.
*/
private List<WebFilter> filtersInReverse() {
List<WebFilter> result = new ArrayList<>(this.filters);
Collections.reverse(result);
return result;
}
@Override
public WebTestClient build() {

View File

@@ -20,6 +20,8 @@ import org.springframework.web.server.WebHandler;
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
/**
* Simple extension of {@link AbstractMockServerSpec} that is given a target
* {@link WebHandler}.
*
* @author Rossen Stoyanchev
* @since 5.0