@ -132,13 +132,18 @@ public class SessionRegistryImpl implements SessionRegistry,
sessionIds . put ( sessionId ,
sessionIds . put ( sessionId ,
new SessionInformation ( principal , sessionId , new Date ( ) ) ) ;
new SessionInformation ( principal , sessionId , new Date ( ) ) ) ;
Set < String > sessionsUsedByPrincipal = principals . computeIfAbsent ( principal , key - > new CopyOnWriteArraySet < > ( ) ) ;
principals . compute ( principal , ( key , sessionsUsedByPrincipal ) - > {
if ( sessionsUsedByPrincipal = = null ) {
sessionsUsedByPrincipal = new CopyOnWriteArraySet < > ( ) ;
}
sessionsUsedByPrincipal . add ( sessionId ) ;
sessionsUsedByPrincipal . add ( sessionId ) ;
if ( logger . isTraceEnabled ( ) ) {
if ( logger . isTraceEnabled ( ) ) {
logger . trace ( "Sessions used by '" + principal + "' : "
logger . trace ( "Sessions used by '" + principal + "' : "
+ sessionsUsedByPrincipal ) ;
+ sessionsUsedByPrincipal ) ;
}
}
return sessionsUsedByPrincipal ;
} ) ;
}
}
public void removeSessionInformation ( String sessionId ) {
public void removeSessionInformation ( String sessionId ) {
@ -157,12 +162,7 @@ public class SessionRegistryImpl implements SessionRegistry,
sessionIds . remove ( sessionId ) ;
sessionIds . remove ( sessionId ) ;
Set < String > sessionsUsedByPrincipal = principals . get ( info . getPrincipal ( ) ) ;
principals . computeIfPresent ( info . getPrincipal ( ) , ( key , sessionsUsedByPrincipal ) - > {
if ( sessionsUsedByPrincipal = = null ) {
return ;
}
if ( logger . isDebugEnabled ( ) ) {
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Removing session " + sessionId
logger . debug ( "Removing session " + sessionId
+ " from principal's set of registered sessions" ) ;
+ " from principal's set of registered sessions" ) ;
@ -176,13 +176,15 @@ public class SessionRegistryImpl implements SessionRegistry,
logger . debug ( "Removing principal " + info . getPrincipal ( )
logger . debug ( "Removing principal " + info . getPrincipal ( )
+ " from registry" ) ;
+ " from registry" ) ;
}
}
principals . remove ( info . getPrincipal ( ) ) ;
sessionsUsedByPrincipal = null ;
}
}
if ( logger . isTraceEnabled ( ) ) {
if ( logger . isTraceEnabled ( ) ) {
logger . trace ( "Sessions used by '" + info . getPrincipal ( ) + "' : "
logger . trace ( "Sessions used by '" + info . getPrincipal ( ) + "' : "
+ sessionsUsedByPrincipal ) ;
+ sessionsUsedByPrincipal ) ;
}
}
return sessionsUsedByPrincipal ;
} ) ;
}
}
}
}