public class SessionCache extends Object implements org.springframework.context.ApplicationContextAware
SessionManager. Maps from
 Session uuid to SessionContext in memory, with each mapping
 also having an additional cache which may spill over to disk,
 listeners.
 Uses MapMaker and various implementations from
 java.util.concurrent.atomic to provide a lock-free implementation.| Modifier and Type | Class and Description | 
|---|---|
| static interface  | SessionCache.StaleCacheListenerObserver pattern used to refresh sessions in doUpdate. | 
| Constructor and Description | 
|---|
| SessionCache() | 
| Modifier and Type | Method and Description | 
|---|---|
| boolean | addSessionCallback(String session,
                  SessionCallback cb) | 
| protected net.sf.ehcache.Ehcache | createCache(String key,
           boolean inMemory,
           int maxInMemory) | 
| void | doUpdate()Will only ever be accessed by a single thread. | 
| Set<String> | getIds()Since all methods which use  getIds()will subsequently check for
 the existing session, we do not block here. | 
| long | getLastUpdated() | 
| SessionContext | getSessionContext(String uuid)Retrieve a session possibly raising either
  RemovedSessionExceptionorSessionTimeoutException. | 
| SessionContext | getSessionContext(String uuid,
                 boolean quietly)Retrieve a session possibly raising either
  RemovedSessionExceptionorSessionTimeoutException. | 
| Map<String,Object> | getSessionData(String uuid,
              boolean quietly)Returns all the data contained in the internal implementation of
 this manger. | 
| net.sf.ehcache.Ehcache | inMemoryCache(String uuid) | 
| net.sf.ehcache.Ehcache | onDiskCache(String uuid) | 
| void | putSession(String uuid,
          SessionContext sessionContext)Puts a session blindly into the context. | 
| void | refresh(String uuid,
       SessionContext replacement)Used externally to refresh the  SessionContextinstance
 associated with the session uuid | 
| void | reload(String id)Provides the reloading logic of the  SessionCachefor theSessionManagerImplto use. | 
| void | removeSession(String uuid) | 
| boolean | removeSessionCallback(String session,
                     SessionCallback cb) | 
| void | setApplicationContext(org.springframework.context.ApplicationContext ctx)Context injector. | 
| void | setCacheManager(net.sf.ehcache.CacheManager manager)Injection method, also performs the creation of  sessions | 
| void | setStaleCacheListener(SessionCache.StaleCacheListener staleCacheListener) | 
| void | setUpdateInterval(long milliseconds)Inject time in milliseconds between updates. | 
| void | updateEvent(UserGroupUpdateEvent ugue)Adds a new entry to  state. | 
public void setCacheManager(net.sf.ehcache.CacheManager manager)
sessionspublic void setApplicationContext(org.springframework.context.ApplicationContext ctx)
                           throws org.springframework.beans.BeansException
setApplicationContext in interface org.springframework.context.ApplicationContextAwareorg.springframework.beans.BeansExceptionpublic void setUpdateInterval(long milliseconds)
public void setStaleCacheListener(SessionCache.StaleCacheListener staleCacheListener)
public boolean addSessionCallback(String session, SessionCallback cb)
public boolean removeSessionCallback(String session, SessionCallback cb)
public void putSession(String uuid, SessionContext sessionContext)
public void refresh(String uuid, SessionContext replacement)
SessionContext instance
 associated with the session uuiduuid - replacement - public SessionContext getSessionContext(String uuid)
RemovedSessionException or SessionTimeoutException.public SessionContext getSessionContext(String uuid, boolean quietly)
RemovedSessionException or SessionTimeoutException.quietly - If true, then the access time for the given UUID
                  will not be updated.public Map<String,Object> getSessionData(String uuid, boolean quietly)
quietly - If true, then the access time for the given UUID
                  will not be updated.public void removeSession(String uuid)
public Set<String> getIds()
getIds() will subsequently check for
 the existing session, we do not block here. Blocking is primarily useful
 for post-admintype changes which can add or remove a user from a group.
 The existence of a session (which is what getIds specifies) is not
 significantly effected.public net.sf.ehcache.Ehcache inMemoryCache(String uuid)
public net.sf.ehcache.Ehcache onDiskCache(String uuid)
protected net.sf.ehcache.Ehcache createCache(String key, boolean inMemory, int maxInMemory)
public long getLastUpdated()
public void updateEvent(UserGroupUpdateEvent ugue)
state. If the
 timestamp on the event is invalid, then
 System.currentTimeMillis() will be used.public void doUpdate()
active gets set to true value to specify that this
 method is currently running.public void reload(String id)
SessionCache for the
 SessionManagerImpl to use.
                
                
Version: 5.2.5-ice35-b28
Copyright © 2016 The University of Dundee & Open Microscopy Environment. All Rights Reserved.