272. Adapting request/exchange
Adapting a request can be useful for testing and debugging purposes. Practically, we can adapt the request (com.sun.net.httpserver.Request
) before the handler sees it, so we can modify the initial request and pass the result to the handler. For this, we can rely on the pre-processing Filter.adaptRequest(String description, UnaryOperator<Request> requestOperator)
method. Besides the description, this method gets the effective request state of the exchange as UnaryOperator<Request>
.
Here is an example that adds to each request the header Author
next to a post-processing filter that logs the request details to the console:
HttpHandler fileHandler = ...;
Filter preFilter = Filter.adaptRequest(
"Add 'Author' header", r -> r.with(
"Author", List.of("Anghel Leonard")));
Filter postFilter = SimpleFileServer.createOutputFilter(
out, SimpleFileServer.OutputLevel.VERBOSE);
HttpServer sws = HttpServer...