예제 #1
0
  @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);
            });
  }
예제 #2
0
 /**
  * スラッシュなし 参考
  * 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);
 }