diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/DataStoreUserSessionCleaner.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/DataStoreUserSessionCleaner.java index f0038d3bbb8f832ea6b5d2af509b6281d43ade16..b10a5c1fbf7b55d56cf590f072f1ecf723a3fd0b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/DataStoreUserSessionCleaner.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/DataStoreUserSessionCleaner.java @@ -16,10 +16,10 @@ package ch.systemsx.cisd.openbis.generic.server.util; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; @@ -33,13 +33,14 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session.ISessionCleaner; public class DataStoreUserSessionCleaner { - private final Map<String, List<IDataStoreService>> sessions = - new HashMap<String, List<IDataStoreService>>(); + private final Map<String, Set<IDataStoreService>> sessions = + new HashMap<String, Set<IDataStoreService>>(); public void add(Session userSession, IDataStoreService dataStore) { 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); userSession.addCleanupListener(new ISessionCleaner() { @@ -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) { - dataStores = new ArrayList<IDataStoreService>(); + dataStores = new HashSet<IDataStoreService>(); sessions.put(userSessionToken, dataStores); } return dataStores;