Interface Filter

All Superinterfaces:
Function<HttpHandler,HttpHandler>
All Known Implementing Classes:
AddSecretFilter, AddSeleniumUserAgent, AddWebDriverSpecHeaders, BasicAuthenticationFilter, CheckContentTypeHeader, CheckOriginHeader, DumpHttpExchangeFilter, EnsureSpecCompliantHeaders, EnsureSpecCompliantResponseHeaders, ErrorFilter, RequiresSecretFilter, RetryRequest, SpanDecorator
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface Filter extends Function<HttpHandler,HttpHandler>
Can be wrapped around an HttpHandler in order to either modify incoming HttpRequests or outgoing HttpResponses using the well-known "Filter" pattern. This is very similar to the Servlet spec's javax.servlet.Filter, but takes advantage of lambdas:

 Filter filter = next -> {
   return req -> {
     req.addHeader("cheese", "brie");
     HttpResponse res = next.apply(req);
     res.addHeader("vegetable", "peas");
     return res;
   };
 }
 

Because each filter returns an HttpHandler, it's easy to do processing before, or after each request, as well as short-circuit things if necessary.