Skip to content
Snippets Groups Projects
Commit 804138a5 authored by brinn's avatar brinn
Browse files

Don't call the datastore cleanupSesion() method multiple times on session close.

SVN: 26257
parent 25f94ba2
No related branches found
No related tags found
No related merge requests found
...@@ -16,10 +16,10 @@ ...@@ -16,10 +16,10 @@
package ch.systemsx.cisd.openbis.generic.server.util; package ch.systemsx.cisd.openbis.generic.server.util;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService;
import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
...@@ -33,13 +33,14 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session.ISessionCleaner; ...@@ -33,13 +33,14 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session.ISessionCleaner;
public class DataStoreUserSessionCleaner public class DataStoreUserSessionCleaner
{ {
private final Map<String, List<IDataStoreService>> sessions = private final Map<String, Set<IDataStoreService>> sessions =
new HashMap<String, List<IDataStoreService>>(); new HashMap<String, Set<IDataStoreService>>();
public void add(Session userSession, IDataStoreService dataStore) public void add(Session userSession, IDataStoreService dataStore)
{ {
final String userSessionToken = userSession.getSessionToken(); final String userSessionToken = userSession.getSessionToken();
final List<IDataStoreService> dataStores = getOrCreateDataStores(userSessionToken); final Set<IDataStoreService> dataStores = getOrCreateDataStores(userSessionToken);
// Note: data stores are cached by DataStoreServiceFactory, thus the set works out.
dataStores.add(dataStore); dataStores.add(dataStore);
userSession.addCleanupListener(new ISessionCleaner() userSession.addCleanupListener(new ISessionCleaner()
{ {
...@@ -55,12 +56,12 @@ public class DataStoreUserSessionCleaner ...@@ -55,12 +56,12 @@ public class DataStoreUserSessionCleaner
}); });
} }
private List<IDataStoreService> getOrCreateDataStores(String userSessionToken) private Set<IDataStoreService> getOrCreateDataStores(String userSessionToken)
{ {
List<IDataStoreService> dataStores = sessions.get(userSessionToken); Set<IDataStoreService> dataStores = sessions.get(userSessionToken);
if (dataStores == null) if (dataStores == null)
{ {
dataStores = new ArrayList<IDataStoreService>(); dataStores = new HashSet<IDataStoreService>();
sessions.put(userSessionToken, dataStores); sessions.put(userSessionToken, dataStores);
} }
return dataStores; return dataStores;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment