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); } }
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; }