コード例 #1
0
  @Override
  public void doFilter(
      ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
      throws IOException, ServletException {
    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;

    // TODO test for redirect
    // no redirect; process the request

    // create Request, Response objects
    RequestResponseFactory requestResponseFactory = application.getRequestResponseFactory();
    Response response = requestResponseFactory.createResponse(httpServletResponse);
    Request request = requestResponseFactory.createRequest(httpServletRequest, response);

    // create a URI to automatically decode the path
    URI uri = URI.create(httpServletRequest.getRequestURL().toString());
    String requestUri = uri.getPath();
    String requestPath = request.getPath();

    log.trace("The relative path for '{}' is '{}'", requestUri, requestPath);

    // check for ignore path
    if (shouldIgnorePath(requestPath)) {
      log.debug("Ignoring request '{}'", requestPath);
      if (chain != null) {
        chain.doFilter(servletRequest, servletResponse);
      }

      return;
    }

    log.debug("Request {} '{}'", request.getMethod(), requestPath);

    // dispatch route(s)
    routeDispatcher.dispatch(request, response);
  }