コード例 #1
0
 private RackBaseInput createRackInput(Ruby runtime, RackEnvironment env) throws IOException {
   if (env.getContext().getConfig().isRewindable()) {
     return new RackRewindableInput(runtime, env);
   } else {
     return new RackNonRewindableInput(runtime, env);
   }
 }
コード例 #2
0
  private ServletRequest addHtmlToPathAndVerifyResource(
      ServletRequest request, RackEnvironment env) {
    HttpServletRequest httpRequest = (HttpServletRequest) request;

    if (!isAddsHtmlToPathInfo()) return httpRequest;

    final String path = env.getPathInfo();

    final int lastDelim = path.lastIndexOf('/');
    if (path.lastIndexOf('.') <= lastDelim) {

      final StringBuilder htmlSuffix = new StringBuilder(10);
      if (lastDelim == path.length() - 1) { // ends-with '/'
        htmlSuffix.append("index");
      }
      htmlSuffix.append(".html");

      final String htmlPath = path + htmlSuffix;
      // Welcome file list already triggered mapping to index.html, so don't modify the request any
      // further
      if (httpRequest.getServletPath().equals(htmlPath)) {
        return httpRequest;
      }

      if (isVerifiesHtmlResource() && !resourceExists(htmlPath)) {
        return httpRequest;
      }

      final String requestURI = httpRequest.getRequestURI() + htmlSuffix;
      if (httpRequest.getPathInfo() != null) {
        final String pathInfo = httpRequest.getPathInfo() + htmlSuffix;
        httpRequest =
            new HttpServletRequestWrapper(httpRequest) {

              @Override
              public String getPathInfo() {
                return pathInfo;
              }

              @Override
              public String getRequestURI() {
                return requestURI;
              }
            };
      } else {
        final String servletPath = httpRequest.getServletPath() + htmlSuffix;
        httpRequest =
            new HttpServletRequestWrapper(httpRequest) {

              @Override
              public String getServletPath() {
                return servletPath;
              }

              @Override
              public String getRequestURI() {
                return requestURI;
              }
            };
      }
    }
    return httpRequest;
  }