improved null safety

This commit is contained in:
2022-01-12 11:35:02 +01:00
parent c75cf03762
commit 0f3d3e929d
40 changed files with 157 additions and 113 deletions

View File

@@ -42,7 +42,7 @@ public class LobbyCommand {
if (count == 1) builder.append("There is one open session:\n");
else builder.append("There are ").append(count).append(" open sessions:\n");
sessions.forEach((session) -> builder.append(session).append('\n'));
sessions.forEach((uuid, session) -> builder.append(session).append('\n'));
client.println(builder);
} else {
client.println("No sessions.");
@@ -106,7 +106,7 @@ public class LobbyCommand {
@NotNull
@Override
public Iterator<String> iterator() {
return lobby.getSessions().stream().map(SessionData::getUuid).map(UUID::toString).iterator();
return lobby.getSessions().values().stream().map(SessionData::getUuid).map(UUID::toString).iterator();
}
}
}

View File

@@ -10,10 +10,10 @@ import java.util.*;
public final class Lobby extends BaseState {
@Getter
private final Set<SessionData> sessions = new HashSet<>();
private final Map<UUID, SessionData> sessions = new HashMap<>();
public Lobby(SessionListMessage list) {
sessions.addAll(list.getSessions());
list.getSessions().forEach(session -> sessions.put(session.getUuid(), session));
}
@Override
@@ -30,18 +30,18 @@ public final class Lobby extends BaseState {
public Optional<ClientState> onMessage(Client client, ServerMessage message) {
if (message instanceof SessionCreatedMessage created) {
var session = created.getSession();
sessions.add(session);
sessions.put(session.getUuid(), session);
return Optional.empty();
} else if (message instanceof SessionRemovedMessage removed) {
sessions.remove(new SessionData(removed.getSession(), null, 0, null));
sessions.remove(removed.getSession());
return Optional.empty();
} else if (message instanceof SessionModifiedMessage modified) {
sessions.remove(modified.getSession());
sessions.add(modified.getSession());
var session = modified.getSession();
sessions.put(session.getUuid(), session);
return Optional.empty();
} else if (message instanceof SessionListMessage list) {
sessions.clear();
sessions.addAll(list.getSessions());
list.getSessions().forEach(session -> sessions.put(session.getUuid(), session));
return Optional.empty();
} else {
return unexpectedMessage(client, message);