Skip to content
Snippets Groups Projects
Commit 03aa25d5 authored by Christoph Thelen's avatar Christoph Thelen
Browse files

Make direct use of User object instead of username

parent 3af0166e
Branches
Tags
No related merge requests found
......@@ -67,13 +67,20 @@ public class User implements Serializable {
this.type = type;
}
@Override
public String toString() {
return "User, username: " + this.username + ", type: " + this.type;
return "User [username=" + username + ", type=" + type + "]";
}
@Override
public int hashCode() {
return username.hashCode();
// See http://stackoverflow.com/a/113600
final int theAnswer = 42;
final int theOthers = 37;
int result = theAnswer;
result = theOthers * result + this.username.hashCode();
return theOthers * result + this.type.hashCode();
}
@Override
......
......@@ -39,7 +39,7 @@ public interface IUserService {
boolean isUserInSession(User user, String keyword);
List<String> getUsersInSession(String keyword);
List<User> getUsersInSession(String keyword);
void addCurrentUserToSessionMap(String keyword);
......
......@@ -41,7 +41,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
public static final Logger LOGGER = LoggerFactory.getLogger(UserService.class);
private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>();
private static final ConcurrentHashMap<String, String> user2session = new ConcurrentHashMap<String, String>();
private static final ConcurrentHashMap<User, String> user2session = new ConcurrentHashMap<User, String>();
@Override
public User getCurrentUser() {
......@@ -106,16 +106,16 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
public boolean isUserInSession(User user, String keyword) {
if (keyword == null)
return false;
String session = user2session.get(user.getUsername());
String session = user2session.get(user);
if (session == null)
return false;
return keyword.equals(session);
}
@Override
public List<String> getUsersInSession(String keyword) {
List<String> result = new ArrayList<String>();
for (Entry<String, String> e : user2session.entrySet()) {
public List<User> getUsersInSession(String keyword) {
List<User> result = new ArrayList<User>();
for (Entry<User, String> e : user2session.entrySet()) {
if (e.getValue().equals(keyword)) {
result.add(e.getKey());
}
......@@ -129,7 +129,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
User user = getCurrentUser();
if (user == null)
throw new UnauthorizedException();
user2session.put(user.getUsername(), keyword);
user2session.put(user, keyword);
}
@Override
......@@ -149,7 +149,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
Hashtable<String, Map<?, ?>> map = (Hashtable<String, Map<?, ?>>) ois.readObject();
ois.close();
Map<UUID, User> s2u = (Map<UUID, User>) map.get("socketid2user");
Map<String, String> u2s = (Map<String, String>) map.get("user2session");
Map<User, String> u2s = (Map<User, String>) map.get("user2session");
LOGGER.info("load from store: {}", map);
......
......@@ -202,12 +202,12 @@ public class ARSnovaSocketIOServer {
* all connected clients and if send feedback, if user is in current
* session
*/
List<String> users = userService.getUsersInSession(session);
List<User> users = userService.getUsersInSession(session);
de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(session);
for (SocketIOClient c : server.getAllClients()) {
User u = userService.getUser2SocketId(c.getSessionId());
if (u != null && users.contains(u.getUsername())) {
if (u != null && users.contains(u)) {
logger.info("sending out to client {}, username is: {}, current session is: {}",
new Object[] { c.getSessionId(), u.getUsername(), session });
c.sendEvent("updateFeedback", fb.getValues());
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment