Use lower-case version of nickname as key into users map, to allow for case-insensitivity of nicknames. Fixes #19.

This commit is contained in:
Andy Janata 2012-10-11 20:09:56 -07:00
parent c6c6feb49f
commit 15d94735e7
1 changed files with 7 additions and 4 deletions

View File

@ -54,6 +54,9 @@ public class ConnectedUsers {
*/ */
public static final long PING_TIMEOUT = 45L * 1000L * 1000000L; public static final long PING_TIMEOUT = 45L * 1000L * 1000000L;
/**
* Key (username) must be stored in lower-case to facilitate case-insensitivity in nicks.
*/
private final Map<String, User> users = new HashMap<String, User>(); private final Map<String, User> users = new HashMap<String, User>();
/** /**
@ -62,7 +65,7 @@ public class ConnectedUsers {
* @return True if {@code userName} is a connected user. * @return True if {@code userName} is a connected user.
*/ */
public boolean hasUser(final String userName) { public boolean hasUser(final String userName) {
return users.containsKey(userName); return users.containsKey(userName.toLowerCase());
} }
/** /**
@ -73,7 +76,7 @@ public class ConnectedUsers {
*/ */
public void newUser(final User user) { public void newUser(final User user) {
synchronized (users) { synchronized (users) {
users.put(user.getNickname(), user); users.put(user.getNickname().toLowerCase(), user);
final HashMap<ReturnableData, Object> data = new HashMap<ReturnableData, Object>(); final HashMap<ReturnableData, Object> data = new HashMap<ReturnableData, Object>();
data.put(LongPollResponse.EVENT, LongPollEvent.NEW_PLAYER.toString()); data.put(LongPollResponse.EVENT, LongPollEvent.NEW_PLAYER.toString());
data.put(LongPollResponse.NICKNAME, user.getNickname()); data.put(LongPollResponse.NICKNAME, user.getNickname());
@ -94,7 +97,7 @@ public class ConnectedUsers {
synchronized (users) { synchronized (users) {
if (users.containsValue(user)) { if (users.containsValue(user)) {
user.noLongerVaild(); user.noLongerVaild();
users.remove(user.getNickname()); users.remove(user.getNickname().toLowerCase());
notifyRemoveUser(user, reason); notifyRemoveUser(user, reason);
} }
} }
@ -108,7 +111,7 @@ public class ConnectedUsers {
*/ */
@Nullable @Nullable
public User getUser(final String nickname) { public User getUser(final String nickname) {
return users.get(nickname); return users.get(nickname.toLowerCase());
} }
/** /**