disconnectedUsernames) {
- setData(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayers());
+ setData(game.getSlotMap(), game.getOrderLogicCard(), game.getCurrentState(), game.getPlayers());
}
/**
diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java
index db906d5..d40ccee 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java
@@ -126,7 +126,7 @@ public class RMIClient implements IClient {
if (!running) return;
running = false;
if (pingSender != null) pingSender.shutdownNow();
- controller.miniModel=null;
+ controller.setModel(null);
controller.setClient(null);
}
diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java
index e3f141c..5493ed9 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java
@@ -16,7 +16,6 @@ import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
@@ -130,7 +129,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer {
System.out.println("Reconnected player: " + username);
startWatchdog(username);
Game game = controller.getModel();
- callback.onGameInit(new MiniModel(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayers(), game.getAvailableTotems(), game.getUpperListTribeCards(), game.getLowerListTribeCards(), game.getUpperListBuilding(), game.getLowerListBuilding(), game.disconnetedPlayers.entrySet().stream().filter(Map.Entry::getValue).map(x -> x.getKey().getUserName()).collect(Collectors.toCollection(ArrayList::new))));
+ callback.onGameInit(new MiniModel(game.getSlotMap(), game.getOrderLogicCard(), game.getCurrentState(), game.getPlayers(), game.getAvailableTotems(), game.getUpperListTribeCards(), game.getLowerListTribeCards(), game.getUpperListBuilding(), game.getLowerListBuilding(), game.disconnectedPlayers.entrySet().stream().filter(Map.Entry::getValue).map(x -> x.getKey().getUserName()).collect(Collectors.toCollection(ArrayList::new))));
System.out.println("Model sent: " + username);
actionQueue.add(new ReconnectPlayer(username));
return null;
diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java
index e4291a0..867266b 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java
@@ -262,11 +262,11 @@ public class TCPServer {
Game game = controller.getModel();
handler.notifyMiniModel(new MiniModel(
game.getSlotMap(),
- game.orderLogicCard,
+ game.getOrderLogicCard(),
game.getCurrentState(),
game.getPlayers(),
game.getAvailableTotems(),
- game.getUpperListTribeCards(), game.getLowerListTribeCards(), game.getUpperListBuilding(), game.getLowerListBuilding(), game.disconnetedPlayers.entrySet().stream().filter(Map.Entry::getValue).map(x -> x.getKey().getUserName()).collect(Collectors.toCollection(ArrayList::new))
+ game.getUpperListTribeCards(), game.getLowerListTribeCards(), game.getUpperListBuilding(), game.getLowerListBuilding(), game.disconnectedPlayers.entrySet().stream().filter(Map.Entry::getValue).map(x -> x.getKey().getUserName()).collect(Collectors.toCollection(ArrayList::new))
));
Thread thread = new Thread(handler);
diff --git a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java
index 8995818..c8e628a 100644
--- a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java
+++ b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java
@@ -95,11 +95,11 @@ public class ServerLauncher {
synchronized (gameController) {
Game game = gameController.getModel();
miniModel = new MiniModel(
- game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),
+ game.getSlotMap(), game.getOrderLogicCard(), game.getCurrentState(),
game.getPlayers(), game.getAvailableTotems(),
game.getUpperListTribeCards(), game.getLowerListTribeCards(),
game.getUpperListBuilding(), game.getLowerListBuilding(),
- game.disconnetedPlayers.entrySet().stream()
+ game.disconnectedPlayers.entrySet().stream()
.filter(Map.Entry::getValue)
.map(e -> e.getKey().getUserName())
.collect(Collectors.toCollection(ArrayList::new))
@@ -127,16 +127,11 @@ public class ServerLauncher {
* Runs the event-processing loop until the thread is interrupted.
*
* A {@link ConcurrentModificationException} is caught and logged rather
- * than propagated; it is caused by an unsafe {@link ArrayList} in
- * {@code TCPServer.clientHandlers} (tracked as a separate issue) and does
- * not leave the game in an inconsistent state.
*/
public void run() {
while (true) {
try {
eventProcessor.doFirstEvent();
- } catch (ConcurrentModificationException e) {
- System.err.println("Concurrent modification in notifyAll — skipping tick");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
@@ -167,7 +162,7 @@ public class ServerLauncher {
Game game = saveManager.load();
if (game == null) return;
- long disconnectedCount = game.disconnetedPlayers.entrySet().stream()
+ long disconnectedCount = game.disconnectedPlayers.entrySet().stream()
.filter(Map.Entry::getValue).count();
if (disconnectedCount >= game.getNPlayers() - 1) {
@@ -179,7 +174,7 @@ public class ServerLauncher {
gameController.setModel(game);
playerList.setLimit(game.getNPlayers());
- for (Map.Entry entry : game.disconnetedPlayers.entrySet()) {
+ for (Map.Entry entry : game.disconnectedPlayers.entrySet()) {
if (entry.getValue()) {
playerList.put(entry.getKey().getUserName(), false);
}
diff --git a/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java b/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java
index e4bc168..7782290 100644
--- a/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java
+++ b/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java
@@ -263,8 +263,8 @@ class GameControllerTest {
assertTrue(controller.disconnectedPlayer(current.getUserName()));
- assertTrue(game.disconnetedPlayers.containsKey(current));
- assertTrue(game.disconnetedPlayers.get(current));
+ assertTrue(game.disconnectedPlayers.containsKey(current));
+ assertTrue(game.disconnectedPlayers.get(current));
}
@Test
diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java
index fa30059..8a816ea 100644
--- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java
+++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java
@@ -1341,8 +1341,8 @@ class GameTest {
assertTrue(game.disconnectedPlayer(current));
- assertTrue(game.disconnetedPlayers.containsKey(current));
- assertTrue(game.disconnetedPlayers.get(current));
+ assertTrue(game.disconnectedPlayers.containsKey(current));
+ assertTrue(game.disconnectedPlayers.get(current));
assertNotEquals(current, game.getCurrentState().getCurrentPlayer());
}
@@ -1367,10 +1367,10 @@ class GameTest {
Player current = game.getCurrentState().getCurrentPlayer();
assertTrue(game.disconnectedPlayer(current));
- assertTrue(game.disconnetedPlayers.containsKey(current));
+ assertTrue(game.disconnectedPlayers.containsKey(current));
assertTrue(game.reconnectPlayer(current));
- assertFalse(game.disconnetedPlayers.containsKey(current));
+ assertFalse(game.disconnectedPlayers.containsKey(current));
}
@Test
@@ -1382,11 +1382,11 @@ class GameTest {
Player current = game.getCurrentState().getCurrentPlayer();
assertTrue(game.disconnectedPlayer(current));
- assertFalse(game.disconnetedPlayers.isEmpty());
+ assertFalse(game.disconnectedPlayers.isEmpty());
game.ClearDisconnected();
- assertTrue(game.disconnetedPlayers.isEmpty());
+ assertTrue(game.disconnectedPlayers.isEmpty());
}
@Test