@Override public void handle(Request request, HttpResponder httpResponder) { Stopwatch stopwatch = Stopwatch.createStarted(); ServeEvent serveEvent = handleRequest(request); ResponseDefinition responseDefinition = serveEvent.getResponseDefinition(); responseDefinition.setOriginalRequest(request); Response response = responseRenderer.render(serveEvent); ServeEvent completedServeEvent = serveEvent.complete(response, (int) stopwatch.elapsed(MILLISECONDS)); if (logRequests()) { notifier().info("Request received:\n" + formatRequest(request) + "\n\nMatched response definition:\n" + responseDefinition + "\n\nResponse:\n" + response); } for (RequestListener listener: listeners) { listener.requestReceived(request, response); } beforeResponseSent(completedServeEvent, response); stopwatch.reset(); stopwatch.start(); httpResponder.respond(request, response); completedServeEvent.afterSend((int) stopwatch.elapsed(MILLISECONDS)); afterResponseSent(completedServeEvent, response); stopwatch.stop(); }