public void saveRequest() { // remember the current URI HttpSession session = myRequest.getSession(); synchronized (session) { // But only if it is not set already, or we save every uri that leads to a login form redirect if (session.getAttribute(FormAuthenticator.__J_URI) == null) { StringBuffer buf = myRequest.getRequestURL(); if (myRequest.getQueryString() != null) buf.append("?").append(myRequest.getQueryString()); session.setAttribute(FormAuthenticator.__J_URI, buf.toString()); session.setAttribute(JettyHttpFacade.__J_METHOD, myRequest.getMethod()); if ("application/x-www-form-urlencoded".equals(myRequest.getContentType()) && "POST".equalsIgnoreCase(myRequest.getMethod())) { MultiMap<String> formParameters = extractFormParameters(myRequest); MultivaluedHashMap<String, String> map = new MultivaluedHashMap<String, String>(); for (String key : formParameters.keySet()) { for (Object value : formParameters.getValues(key)) { map.add(key, (String) value); } } session.setAttribute(CACHED_FORM_PARAMETERS, map); } } } }
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; }