Fix: Final code restoration and import cleanup

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Jona Walpert
2026-04-22 18:19:21 +02:00
parent 2c343c72b3
commit 989dc95cef
11 changed files with 31 additions and 36 deletions
@@ -1,5 +1,6 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui;
import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp;
import ch.unibas.dmi.dbis.cs108.casono.client.game.GameService; import ch.unibas.dmi.dbis.cs108.casono.client.game.GameService;
import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
@@ -77,8 +78,7 @@ public class CasinoGameUI extends Application {
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
if (clientService == null) { if (clientService == null) {
clientService = clientService = ClientApp.getSharedClientService();
ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedClientService();
} }
if (clientService == null) { if (clientService == null) {
throw new IllegalStateException( throw new IllegalStateException(
@@ -90,8 +90,7 @@ public class CasinoGameUI extends Application {
String effectiveUsername = normalize(username); String effectiveUsername = normalize(username);
if (effectiveUsername == null) { if (effectiveUsername == null) {
effectiveUsername = effectiveUsername = normalize(ClientApp.getSharedUsername());
normalize(ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedUsername());
} }
if (effectiveUsername == null) { if (effectiveUsername == null) {
@@ -105,7 +104,7 @@ public class CasinoGameUI extends Application {
+ "', injectedUsername='" + "', injectedUsername='"
+ username + username
+ "', sharedUsername='" + "', sharedUsername='"
+ ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedUsername() + ClientApp.getSharedUsername()
+ "', hasClientService=" + "', hasClientService="
+ (clientService != null)); + (clientService != null));
@@ -55,9 +55,9 @@ public class CasinomainuiController {
} }
/** /**
* Initializes the UI components and sets default values. If a shared {@link * Initializes the UI components and sets default values. If a shared {@link ClientService}
* ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService} exists (created at application * exists (created at application start), the controller reuses it so the connection remains
* start), the controller reuses it so the connection remains open and already-logged-in. * open and already-logged-in.
*/ */
@FXML @FXML
public void initialize() { public void initialize() {
@@ -1,7 +1,9 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui;
import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient; import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient;
import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -553,14 +555,10 @@ public class LobbyButtonGridManager {
try { try {
var cs = lobbyClient.getClientService(); var cs = lobbyClient.getClientService();
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI CasinoGameUI.setClientService(cs);
.setClientService(cs); CasinoGameUI.setLobbyId(lobbyId);
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI.setLobbyId(
lobbyId);
String username = String username = ClientApp.getSharedUsername();
ch.unibas.dmi.dbis.cs108.casono.client.ClientApp
.getSharedUsername();
if (username == null || username.isBlank()) { if (username == null || username.isBlank()) {
username = username =
"Guest-" "Guest-"
@@ -570,11 +568,9 @@ public class LobbyButtonGridManager {
.toString() .toString()
.substring(0, GUEST_ID_LENGTH); .substring(0, GUEST_ID_LENGTH);
} }
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI.setUsername( CasinoGameUI.setUsername(username);
username);
new ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI() new CasinoGameUI().start(gameStage);
.start(gameStage);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Game UI failed: {}", e.getMessage()); LOGGER.error("Game UI failed: {}", e.getMessage());
@@ -4,6 +4,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -58,8 +59,7 @@ public class PlayerBetHandler extends CommandHandler<PlayerBetRequest> {
return; return;
} }
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -46,8 +47,7 @@ public class PlayerCallHandler extends CommandHandler<PlayerCallRequest> {
*/ */
@Override @Override
public void execute(PlayerCallRequest request) { public void execute(PlayerCallRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -46,8 +47,7 @@ public class PlayerFoldHandler extends CommandHandler<PlayerFoldRequest> {
*/ */
@Override @Override
public void execute(PlayerFoldRequest request) { public void execute(PlayerFoldRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -60,8 +61,7 @@ public class PlayerRaiseHandler extends CommandHandler<PlayerRaiseRequest> {
return; return;
} }
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -1,5 +1,6 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list; package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher;
@@ -21,8 +22,7 @@ public class GetLobbyListHandler extends CommandHandler<GetLobbyListRequest> {
@Override @Override
public void execute(GetLobbyListRequest request) { public void execute(GetLobbyListRequest request) {
Collection<ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby> l = Collection<Lobby> l = lobbyManager.getAllLobbies();
lobbyManager.getAllLobbies();
responseDispatcher.dispatch(new GetLobbyListResponse(request.getContext(), l)); responseDispatcher.dispatch(new GetLobbyListResponse(request.getContext(), l));
} }
} }
@@ -11,6 +11,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.state.GameState;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -38,8 +39,7 @@ public class StartGameHandler extends CommandHandler<StartGameRequest> {
@Override @Override
public void execute(StartGameRequest request) { public void execute(StartGameRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
// Guard: UserLoggedInCheck should normally handle this // Guard: UserLoggedInCheck should normally handle this
responseDispatcher.dispatch( responseDispatcher.dispatch(
@@ -5,6 +5,7 @@ import ch.unibas.dmi.dbis.cs108.casono.client.chat.Message;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.OkResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.OkResponse;
@@ -40,8 +41,7 @@ public class SendMessageHandler extends CommandHandler<SendMessageRequest> {
@Override @Override
public void execute(SendMessageRequest request) { public void execute(SendMessageRequest request) {
Message message = request.getMessage(); Message message = request.getMessage();
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> senderUser = Optional<User> senderUser = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (senderUser.isPresent()) { if (senderUser.isPresent()) {
message.sender = senderUser.get().getName(); message.sender = senderUser.get().getName();
} }
@@ -1,6 +1,7 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
import ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@@ -8,15 +9,14 @@ class LobbyButtonGridManagerTest {
LobbyButtonGridManager gridManager; LobbyButtonGridManager gridManager;
LobbyButtonTranslationManager translationManager; LobbyButtonTranslationManager translationManager;
GridPane gridPane; GridPane gridPane;
ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer testServer; TestServer testServer;
@BeforeEach @BeforeEach
void setUp() throws Exception { void setUp() throws Exception {
gridPane = new GridPane(); gridPane = new GridPane();
translationManager = LobbyButtonTranslationManager.getInstance(); translationManager = LobbyButtonTranslationManager.getInstance();
translationManager.getButtonIdToLobbyId().clear(); translationManager.getButtonIdToLobbyId().clear();
// Start an in-process test server and connect a real ClientService to it. testServer = new TestServer();
testServer = new ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer();
String host = "127.0.0.1"; String host = "127.0.0.1";
int port = testServer.getPort(); int port = testServer.getPort();
ClientService clientService = new ClientService(host, port); ClientService clientService = new ClientService(host, port);