mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-06 02:32:14 +00:00
Added logging to SessionRegistryImpl.
This commit is contained in:
parent
7fcdd4a6ff
commit
aa4ee54f86
@ -21,6 +21,8 @@ import org.springframework.context.ApplicationEvent;
|
|||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -48,6 +50,10 @@ import javax.servlet.http.HttpSession;
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class SessionRegistryImpl implements SessionRegistry, ApplicationListener {
|
public class SessionRegistryImpl implements SessionRegistry, ApplicationListener {
|
||||||
|
//~ Static fields/initializers =====================================================================================
|
||||||
|
|
||||||
|
protected static final Log logger = LogFactory.getLog(SessionRegistryImpl.class);
|
||||||
|
|
||||||
// ~ Instance fields ===============================================================================================
|
// ~ Instance fields ===============================================================================================
|
||||||
|
|
||||||
private Map principals = Collections.synchronizedMap(new HashMap()); // <principal:Object,SessionIdSet>
|
private Map principals = Collections.synchronizedMap(new HashMap()); // <principal:Object,SessionIdSet>
|
||||||
@ -105,10 +111,14 @@ public class SessionRegistryImpl implements SessionRegistry, ApplicationListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void registerNewSession(String sessionId, Object principal) {
|
public void registerNewSession(String sessionId, Object principal) {
|
||||||
Assert.hasText(sessionId, "SessionId required as per interface contract");
|
Assert.hasText(sessionId, "SessionId required as per interface contract");
|
||||||
Assert.notNull(principal, "Principal required as per interface contract");
|
Assert.notNull(principal, "Principal required as per interface contract");
|
||||||
|
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Registering session " + sessionId +", for principal " + principal);
|
||||||
|
}
|
||||||
|
|
||||||
if (getSessionInformation(sessionId) != null) {
|
if (getSessionInformation(sessionId) != null) {
|
||||||
removeSessionInformation(sessionId);
|
removeSessionInformation(sessionId);
|
||||||
}
|
}
|
||||||
@ -132,16 +142,26 @@ public class SessionRegistryImpl implements SessionRegistry, ApplicationListener
|
|||||||
SessionInformation info = getSessionInformation(sessionId);
|
SessionInformation info = getSessionInformation(sessionId);
|
||||||
|
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Removing " + sessionId + " from set of registered sessions");
|
||||||
|
}
|
||||||
sessionIds.remove(sessionId);
|
sessionIds.remove(sessionId);
|
||||||
|
|
||||||
Set sessionsUsedByPrincipal = (Set) principals.get(info.getPrincipal());
|
Set sessionsUsedByPrincipal = (Set) principals.get(info.getPrincipal());
|
||||||
|
|
||||||
if (sessionsUsedByPrincipal != null) {
|
if (sessionsUsedByPrincipal != null) {
|
||||||
synchronized (sessionsUsedByPrincipal) {
|
synchronized (sessionsUsedByPrincipal) {
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Removing " + sessionId + " from principal's set of registered sessions");
|
||||||
|
}
|
||||||
|
|
||||||
sessionsUsedByPrincipal.remove(sessionId);
|
sessionsUsedByPrincipal.remove(sessionId);
|
||||||
|
|
||||||
if (sessionsUsedByPrincipal.size() == 0) {
|
if (sessionsUsedByPrincipal.size() == 0) {
|
||||||
// No need to keep object in principals Map anymore
|
// No need to keep object in principals Map anymore
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Removing principal " + info.getPrincipal() + " from registry");
|
||||||
|
}
|
||||||
principals.remove(info.getPrincipal());
|
principals.remove(info.getPrincipal());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user