public boolean restoreRequest() { HttpSession session = myRequest.getSession(false); if (session == null) return false; synchronized (session) { String j_uri = (String) session.getAttribute(FormAuthenticator.__J_URI); if (j_uri != null) { // check if the request is for the same url as the original and restore // params if it was a post StringBuffer buf = myRequest.getRequestURL(); if (myRequest.getQueryString() != null) buf.append("?").append(myRequest.getQueryString()); if (j_uri.equals(buf.toString())) { String method = (String) session.getAttribute(JettyHttpFacade.__J_METHOD); myRequest.setMethod(HttpMethod.valueOf(method.toUpperCase()), method); MultivaluedHashMap<String, String> j_post = (MultivaluedHashMap<String, String>) session.getAttribute(CACHED_FORM_PARAMETERS); if (j_post != null) { myRequest.setContentType("application/x-www-form-urlencoded"); MultiMap<String> map = new MultiMap<String>(); for (String key : j_post.keySet()) { for (String val : j_post.getList(key)) { map.add(key, val); } } restoreFormParameters(map, myRequest); } session.removeAttribute(FormAuthenticator.__J_URI); session.removeAttribute(JettyHttpFacade.__J_METHOD); session.removeAttribute(FormAuthenticator.__J_POST); } return true; } } return false; }
@Override public void handle( String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { final String suffix = RequestPath.suffix(target); final String path = path(suffix); if (!paths.contains(path)) { if (!whitelist.contains(suffix)) return; if (!"GET".equals(baseRequest.getMethod())) baseRequest.setMethod(HttpMethod.GET, HttpMethod.GET.toString()); super.handle(target, baseRequest, request, allowCrossOrigin(response)); } else { baseRequest .getContext() .getContext(path) .getRequestDispatcher(target) .forward(request, allowCrossOrigin(response)); } }