@Override public CompletionStage<Result> apply( Function<Http.RequestHeader, CompletionStage<Result>> nextFilter, Http.RequestHeader requestHeader) { long startTime = System.currentTimeMillis(); return nextFilter .apply(requestHeader) .thenApply( result -> { long endTime = System.currentTimeMillis(); long requestTime = endTime - startTime; Logger.info( "{} {} took {}ms and returned {}", requestHeader.method(), requestHeader.uri(), requestTime, result.status()); return result.withHeader("Request-Time", "" + requestTime); }); }
/** * スラッシュなし 参考 * http://stackoverflow.com/questions/10004746/how-to-route-urls-in-play-2-0-so-theyre-indifferent-to-an-ending-slash * * @param requestHeader * @return */ @Override public F.Promise<SimpleResult> onHandlerNotFound(Http.RequestHeader requestHeader) { // System.out.println("onHandlerNotFound:" + requestHeader.path()); if (hasTrailingSlash(requestHeader.path())) { final String path = requestHeader.path(); return F.Promise.promise( new F.Function0<SimpleResult>() { public SimpleResult apply() { return Action.redirect(removeLastChar(path)); } }); } else { // System.out.println("onHandlerNotFound action定義なしのため、トップに遷移させます"); return F.Promise.promise( new F.Function0<SimpleResult>() { public SimpleResult apply() { return Action.redirect("/"); } }); } // return super.onHandlerNotFound(requestHeader); }