From 50a9ccc4457fe6d42fbb47b33b1464772e988757 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de> Date: Sat, 9 Mar 2013 16:42:24 +0100 Subject: [PATCH] Using Set instead of List as Collection type for getUsersInSession to prevent duplicates if the client uses Socket.IO and still sends the **/online ping. --- src/main/java/de/thm/arsnova/services/IUserService.java | 2 +- src/main/java/de/thm/arsnova/services/UserService.java | 6 +++--- .../java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/thm/arsnova/services/IUserService.java b/src/main/java/de/thm/arsnova/services/IUserService.java index 1231bf9c1..b95e1b03e 100644 --- a/src/main/java/de/thm/arsnova/services/IUserService.java +++ b/src/main/java/de/thm/arsnova/services/IUserService.java @@ -39,7 +39,7 @@ public interface IUserService { boolean isUserInSession(User user, String keyword); - List<User> getUsersInSession(String keyword); + Set<User> getUsersInSession(String keyword); void addCurrentUserToSessionMap(String keyword); diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java index 84d952172..8db052e05 100644 --- a/src/main/java/de/thm/arsnova/services/UserService.java +++ b/src/main/java/de/thm/arsnova/services/UserService.java @@ -7,7 +7,7 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; -import java.util.ArrayList; +import java.util.HashSet; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -148,8 +148,8 @@ public class UserService implements IUserService, InitializingBean, DisposableBe } @Override - public List<User> getUsersInSession(String keyword) { - List<User> result = new ArrayList<User>(); + public Set<User> getUsersInSession(String keyword) { + Set<User> result = new HashSet<User>(); for (Entry<User, String> e : user2session.entrySet()) { if (e.getValue().equals(keyword)) { result.add(e.getKey()); diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index be88f17ad..224faa86b 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -265,7 +265,7 @@ public class ARSnovaSocketIOServer { * all connected clients and if send feedback, if user is in current * session */ - List<User> users = userService.getUsersInSession(sessionKey); + Set<User> users = userService.getUsersInSession(sessionKey); for (SocketIOClient c : server.getAllClients()) { User u = userService.getUser2SocketId(c.getSessionId()); -- GitLab