public boolean wasInvokedWith(final Request currentRequest) { return currentRequest != null && currentRequest.getNote(INVOKED) == Boolean.TRUE; }
public boolean isIgnoredRequest() { final Request request = _currentRequest.get(); return request != null && request.getNote(REQUEST_IGNORED) == Boolean.TRUE; }
private String getSessionId(final Request request, final Response response) { // If the context is configured with cookie="false" there's no session cookie // sent so we must rely on data from MemcachedSessionService String sessionId = (String) request.getNote(MemcachedSessionService.NEW_SESSION_ID); if(sessionId == null) { sessionId = getSessionIdFromResponseSessionCookie( response ); } return sessionId != null ? sessionId : request.getRequestedSessionId(); }
@Nonnull protected static String getURIWithQueryString( @Nonnull final Request request ) { final Object note = request.getNote(MSM_REQUEST_ID); if(note != null) { // we have a string and want to save cast return note.toString(); } final StringBuilder sb = new StringBuilder(30); sb.append(request.getMethod()) .append(' ') .append(request.getRequestURI()); if(!isPostMethod(request) && request.getQueryString() != null) { sb.append('?').append(request.getQueryString()); } final String result = sb.toString(); request.setNote(MSM_REQUEST_ID, result); return result; }
@BeforeMethod public void setUp() throws Exception { _service = mock( MemcachedSessionService.class ); _sessionTrackerValve = createSessionTrackerValve(); _nextValve = mock( Valve.class ); _sessionTrackerValve.setNext( _nextValve ); _request = mock( Request.class ); _response = mock( Response.class ); when(_request.getNote(eq(RequestTrackingHostValve.REQUEST_PROCESS))).thenReturn(Boolean.TRUE); }
@Test public final void testChangeSessionIdForRelocatedSession() throws IOException, ServletException { final String sessionId = "bar"; final String newSessionId = "newId"; when(_request.getNote(eq(RequestTrackingHostValve.SESSION_ID_CHANGED))).thenReturn(Boolean.TRUE); when( _request.getRequestedSessionId() ).thenReturn( sessionId ); final Cookie cookie = new Cookie( _sessionTrackerValve.getSessionCookieName(), newSessionId ); setupGetResponseSetCookieHeadersExpectations(_response, new String[]{generateCookieString( cookie )}); _sessionTrackerValve.invoke( _request, _response ); verify( _service ).backupSession( eq( newSessionId ), eq( true ), anyString() ); }
@BeforeMethod public void setUp() throws Exception { _service = mock( MemcachedSessionService.class ); _request = mock( Request.class ); _response = mock( Response.class ); final Context _contextContainer = mock(Context.class); final Host _hostContainer = mock(Host.class); final SessionManager _manager = mock(SessionManager.class); when(_service.getManager()).thenReturn(_manager); when(_manager.getContext()).thenReturn(_contextContainer); when(_contextContainer.getParent()).thenReturn(_hostContainer); when(_contextContainer.getPath()).thenReturn("/"); _sessionTrackerValve = createSessionTrackerValve(); _nextValve = mock( Valve.class ); _sessionTrackerValve.setNext( _nextValve ); _sessionTrackerValve.setContainer(_hostContainer); when(_request.getRequestURI()).thenReturn( "/someRequest"); when(_request.getMethod()).thenReturn("GET"); when(_request.getQueryString()).thenReturn(null); when(_request.getContext()).thenReturn(_contextContainer); when(_request.getNote(eq(RequestTrackingHostValve.REQUEST_PROCESSED))).thenReturn(Boolean.TRUE); when(_request.getNote(eq(RequestTrackingHostValve.SESSION_ID_CHANGED))).thenReturn(Boolean.FALSE); }
@Test public void testInvalidNonStickySessionDoesNotCallOnBackupWithoutLoadedSessionIssue137() throws Exception { _service.setStickyInternal( false ); _service.setLockingMode( LockingMode.NONE, null, false ); _service.startInternal(new MemcachedStorageClient(_memcachedMock)); // we must put in our mock again final String sessionId = "nonStickySessionToTimeOut-n1"; // For findSession needed final Request requestMock = mock(Request.class); when(requestMock.getNote(eq(RequestTrackingContextValve.INVOKED))).thenReturn(Boolean.TRUE); _service.getTrackingHostValve().storeRequestThreadLocal(requestMock); final MemcachedBackupSession session = _service.findSession(sessionId); assertNull(session); _service.backupSession( sessionId, false, null ).get(); // check that validity info is not loaded - this would trigger the // WARNING: Found no validity info for session id ... final String validityKey = new SessionIdFormat().createValidityInfoKeyName( sessionId ); verify( _memcachedMock, times( 0 ) ).get( eq( validityKey ) ); }
/** * {@inheritDoc} */ @Override public void invoke( final Request request, final Response response ) throws IOException, ServletException { final Object processRequest = request.getNote(RequestTrackingHostValve.REQUEST_PROCESS); if(processRequest != Boolean.TRUE) { request.setNote(INVOKED, Boolean.TRUE); try { getNext().invoke( request, response ); } finally { request.setNote(RequestTrackingHostValve.REQUEST_PROCESSED, Boolean.TRUE); } } else { boolean sessionIdChanged = false; try { request.setNote(INVOKED, Boolean.TRUE); sessionIdChanged = changeRequestedSessionId( request, response ); getNext().invoke( request, response ); } finally { request.setNote(RequestTrackingHostValve.REQUEST_PROCESSED, Boolean.TRUE); request.setNote(RequestTrackingHostValve.SESSION_ID_CHANGED, Boolean.valueOf(sessionIdChanged)); } } }
public Object getNote(String name) { return httpRequest.getNote(name); }
getNext().invoke( request, response ); } finally { if(request.getNote(REQUEST_PROCESSED) == Boolean.TRUE) { final String sessionId = getSessionId(request, response); if(sessionId != null) { getNext().invoke( request, response ); } finally { final Boolean sessionIdChanged = (Boolean) request.getNote(SESSION_ID_CHANGED); backupSession( request, response, sessionIdChanged == null ? false : sessionIdChanged.booleanValue() ); resetRequestThreadLocal();
when(requestMock.getNote(eq(RequestTrackingContextValve.INVOKED))).thenReturn(Boolean.TRUE); _service.getTrackingHostValve().storeRequestThreadLocal(requestMock);
public static RequestContext fromRequest(final Request request) { if (request == null) { return null; } final Object requestContextObject = request.getNote(Constants.REQUEST_NOTE_PREFIX + Constants.REQUEST_NOTE_CONTEXT); if (requestContextObject != null && RequestContext.class.isInstance(requestContextObject)) { return RequestContext.class.cast(requestContextObject); } return null; }
public boolean isIgnoredRequest() { final Request request = _currentRequest.get(); return request != null && request.getNote(REQUEST_IGNORED) == Boolean.TRUE; }
public void onLogout(final HttpServletRequest request) { final Request state = OpenEJBSecurityListener.requests.get(); final Object webappState = state == null ? null : state.getNote(TomEERealm.SECURITY_NOTE); if (webappState != null) { exitWebApp(webappState); } else { super.onLogout(request); } }
protected SamlSessionStore getSessionStore(Request request, HttpFacade facade, SamlDeployment resolvedDeployment) { SamlSessionStore store = (SamlSessionStore)request.getNote(TOKEN_STORE_NOTE); if (store != null) { return store; } store = createSessionStore(request, facade, resolvedDeployment); request.setNote(TOKEN_STORE_NOTE, store); return store; }
private String getSessionId(final Request request, final Response response) { // If the context is configured with cookie="false" there's no session cookie // sent so we must rely on data from MemcachedSessionService String sessionId = (String) request.getNote(MemcachedSessionService.NEW_SESSION_ID); if(sessionId == null) { sessionId = getSessionIdFromResponseSessionCookie( response ); } return sessionId != null ? sessionId : request.getRequestedSessionId(); }
void track(Session localSession) { validateRequest(); SessionTracker sessionTracker = (SessionTracker) request.getNote(Globals.SESSION_TRACKER); if (sessionTracker != null) { sessionTracker.track(localSession); } }
protected AdapterTokenStore getTokenStore(Request request, HttpFacade facade, KeycloakDeployment resolvedDeployment) { AdapterTokenStore store = (AdapterTokenStore)request.getNote(TOKEN_STORE_NOTE); if (store != null) { return store; } if (resolvedDeployment.getTokenStore() == TokenStore.SESSION) { store = createSessionTokenStore(request, resolvedDeployment); } else { store = new CatalinaCookieTokenStore(request, facade, resolvedDeployment, createPrincipalFactory()); } request.setNote(TOKEN_STORE_NOTE, store); return store; }
protected AdapterTokenStore getTokenStore(Request request, HttpFacade facade, KeycloakDeployment resolvedDeployment) { AdapterTokenStore store = (AdapterTokenStore)request.getNote(TOKEN_STORE_NOTE); if (store != null) { return store; } if (resolvedDeployment.getTokenStore() == TokenStore.SESSION) { store = createSessionTokenStore(request, resolvedDeployment); } else { store = new CatalinaCookieTokenStore(request, facade, resolvedDeployment, createPrincipalFactory()); } request.setNote(TOKEN_STORE_NOTE, store); return store; }