private void sessionDestroyedImpl(HttpSessionEvent se) { //we need to get the current account //there are two options here, we can look for the account in the current request //or we can look for the account that has been saved in the session //for maximum compatibility we do both ServletRequestContext src = ServletRequestContext.current(); Account requestAccount = null; if (src != null) { SecurityContext securityContext = src.getExchange().getSecurityContext(); if(securityContext != null) { requestAccount = securityContext.getAuthenticatedAccount(); if (requestAccount != null) { clearAccount(requestAccount); } } } if (se.getSession() instanceof HttpSessionImpl) { final HttpSessionImpl impl = (HttpSessionImpl) se.getSession(); Session session = impl.getSession(); if (session != null) { AuthenticatedSessionManager.AuthenticatedSession authenticatedSession = (AuthenticatedSessionManager.AuthenticatedSession) session.getAttribute(CachedAuthenticatedSessionHandler.class.getName() + ".AuthenticatedSession"); if(authenticatedSession != null) { Account sessionAccount = authenticatedSession.getAccount(); if (sessionAccount != null && !sessionAccount.equals(requestAccount)) { clearAccount(sessionAccount); } } } } }
public String getOriginalContextPath() { String uri = (String) getAttribute(RequestDispatcher.FORWARD_CONTEXT_PATH); if(uri != null) { return uri; } uri = (String) getAttribute(AsyncContext.ASYNC_CONTEXT_PATH); if(uri != null) { return uri; } return getContextPath(); }
@Override public HttpSessionImpl run() { return HttpSessionImpl.forSession(session, servletContext, newSession); } });
/** * Encode the session identifier associated with this response * into the specified redirect URL, if necessary. * * @param url URL to be encoded */ public String encodeRedirectURL(String url) { if (isEncodeable(toAbsolute(url))) { return originalServletContext.getSessionConfig().rewriteUrl(url, servletContext.getSession(originalServletContext, exchange, true).getId()); } else { return url; } }
@Override public boolean isRequestedSessionIdValid() { HttpSessionImpl session = servletContext.getSession(originalServletContext, exchange, false); if(session == null) { return false; } if(session.isInvalid()) { return false; } return session.getId().equals(getRequestedSessionId()); }
public String getOriginalServletPath() { String uri = (String) getAttribute(RequestDispatcher.FORWARD_SERVLET_PATH); if(uri != null) { return uri; } uri = (String) getAttribute(AsyncContext.ASYNC_SERVLET_PATH); if(uri != null) { return uri; } return getServletPath(); }
public String getOriginalQueryString() { String uri = (String) getAttribute(RequestDispatcher.FORWARD_QUERY_STRING); if(uri != null) { return uri; } uri = (String) getAttribute(AsyncContext.ASYNC_QUERY_STRING); if(uri != null) { return uri; } return getQueryString(); }
@Override public int getContentLength() { long length = getContentLengthLong(); if(length > Integer.MAX_VALUE) { return -1; } return (int)length; }
@Override public String getContentType() { if (contentType != null) { if (charsetSet) { return contentType + ";charset=" + getCharacterEncoding(); } else { return contentType; } } return null; }
@Override public Collection<Part> getParts() throws IOException, ServletException { verifyMultipartServlet(); if (parts == null) { loadParts(); } return parts; }
@Override public SessionCookieConfigImpl getSessionCookieConfig() { ensureNotProgramaticListener(); return sessionCookieConfig; }
@Override public PrintWriter format(final String format, final Object... args) { servletPrintWriter.format(format, args); return this; }
@Override public void setBufferSize(final int size) { if (servletOutputStream != null) { servletOutputStream.setBufferSize(size); } this.bufferSize = size; }
public void flush() { try { outputStream.flush(); } catch (IOException e) { error = true; } }
public void handleCompletedBeforeInitialRequestDone() { assert completedBeforeInitialRequestDone; completeInternal(true); dispatched = true; }
@Override public PrintWriter printf(final String format, final Object... args) { servletPrintWriter.printf(format, args); return this; }
@Override public PrintWriter append(final char c) { servletPrintWriter.append(c); return this; }
@Override public HttpSessionImpl run() { return HttpSessionImpl.forSession(session, servletContext, newSession); } });
@Override public Set<SessionTrackingMode> getDefaultSessionTrackingModes() { ensureNotProgramaticListener(); return defaultSessionTrackingModes; }
@Override public PrintWriter format(final Locale l, final String format, final Object... args) { servletPrintWriter.format(l, format, args); return this; }