Skip to content

Commit

Permalink
add some Java8 magic to the server
Browse files Browse the repository at this point in the history
  • Loading branch information
ingmargoudt committed Jan 19, 2019
1 parent 9bea7c7 commit 50f28a2
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 56 deletions.
12 changes: 7 additions & 5 deletions Mage.Server/src/main/java/mage/server/Main.java
Expand Up @@ -56,9 +56,9 @@ public final class Main {
private static final File extensionFolder = new File("extensions");

public static final PluginClassLoader classLoader = new PluginClassLoader();
public static TransporterServer server;
protected static boolean testMode;
protected static boolean fastDbMode;
private static TransporterServer server;
private static boolean testMode;
private static boolean fastDbMode;

/**
* @param args the command line arguments
Expand Down Expand Up @@ -418,8 +418,10 @@ private static void deleteSavedGames() {
File[] files = directory.listFiles(
(dir, name) -> name.endsWith(".game")
);
for (File file : files) {
file.delete();
if(files != null) {
for (File file : files) {
file.delete();
}
}
}

Expand Down
49 changes: 20 additions & 29 deletions Mage.Server/src/main/java/mage/server/SessionManager.java
@@ -1,14 +1,15 @@

package mage.server;

import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Nonnull;
import mage.MageException;
import mage.players.net.UserData;
import org.apache.log4j.Logger;
import org.jboss.remoting.callback.InvokerCallbackHandler;

import javax.annotation.Nonnull;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

/**
* @author BetaSteward_at_googlemail.com
*/
Expand Down Expand Up @@ -88,18 +89,15 @@ public boolean connectAdmin(String sessionId) {
}

public boolean setUserData(String userName, String sessionId, UserData userData, String clientVersion, String userIdStr) throws MageException {
Session session = sessions.get(sessionId);
if (session != null) {
session.setUserData(userName, userData, clientVersion, userIdStr);
return true;
}
return false;
return getSession(sessionId)
.map(session -> session.setUserData(userName,userData, clientVersion, userIdStr))
.orElse(false);

}

public void disconnect(String sessionId, DisconnectReason reason) {
Session session = sessions.get(sessionId);
if (session != null) {
if (!sessions.containsKey(sessionId)) {
getSession(sessionId).ifPresent(session -> {
if (!isValidSession(sessionId)) {
// session was removed meanwhile by another thread so we can return
return;
}
Expand All @@ -122,11 +120,11 @@ public void disconnect(String sessionId, DisconnectReason reason) {
default:
logger.trace("endSession: unexpected reason " + reason.toString() + " - sessionId: " + sessionId);
}

}
});

}


/**
* Admin requested the disconnect of a user
*
Expand All @@ -150,11 +148,9 @@ public void disconnectUser(String sessionId, String userSessionId) {
}

private Optional<User> getUserFromSession(String sessionId) {
Optional<Session> session = getSession(sessionId);
if (!session.isPresent()) {
return Optional.empty();
}
return UserManager.instance.getUser(session.get().getUserId());
return getSession(sessionId)
.flatMap(s -> UserManager.instance.getUser(s.getUserId()));

}

public void endUserSession(String sessionId, String userSessionId) {
Expand All @@ -164,11 +160,8 @@ public void endUserSession(String sessionId, String userSessionId) {
}

public boolean isAdmin(String sessionId) {
Session admin = sessions.get(sessionId);
if (admin != null) {
return admin.isAdmin();
}
return false;
return getSession(sessionId).map(Session::isAdmin).orElse(false);

}

public boolean isValidSession(@Nonnull String sessionId) {
Expand All @@ -185,11 +178,9 @@ public Optional<User> getUser(@Nonnull String sessionId) {
}

public boolean extendUserSession(String sessionId, String pingInfo) {
Session session = sessions.get(sessionId);
if (session != null) {
return UserManager.instance.extendUserSession(session.getUserId(), pingInfo);
}
return false;
return getSession(sessionId)
.map(session -> UserManager.instance.extendUserSession(session.getUserId(), pingInfo))
.orElse(false);
}

public void sendErrorMessageToClient(String sessionId, String message) {
Expand Down
10 changes: 4 additions & 6 deletions Mage.Server/src/main/java/mage/server/TableController.java
Expand Up @@ -927,12 +927,10 @@ public Match getMatch() {
public boolean isTournamentStillValid() {
if (table.getTournament() != null) {
if (table.getState() != TableState.WAITING && table.getState() != TableState.READY_TO_START && table.getState() != TableState.STARTING) {
TournamentController tournamentController = TournamentManager.instance.getTournamentController(table.getTournament().getId());
if (tournamentController != null) {
return tournamentController.isTournamentStillValid(table.getState());
} else {
return false;
}
return TournamentManager.instance.getTournamentController(table.getTournament().getId())
.map(tc -> tc.isTournamentStillValid(table.getState()))
.orElse(false);

} else {
// check if table creator is still a valid user, if not removeUserFromAllTablesAndChat table
return UserManager.instance.getUser(userId).isPresent();
Expand Down
6 changes: 3 additions & 3 deletions Mage.Server/src/main/java/mage/server/User.java
Expand Up @@ -334,10 +334,10 @@ private void reconnect() {
}
for (Iterator<Entry<UUID, UUID>> iterator = userTournaments.entrySet().iterator(); iterator.hasNext();) {
Entry<UUID, UUID> next = iterator.next();
TournamentController tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
if (tournamentController != null) {
Optional<TournamentController> tournamentController = TournamentManager.instance.getTournamentController(next.getValue());
if (tournamentController.isPresent()) {
ccTournamentStarted(next.getValue(), next.getKey());
tournamentController.rejoin(next.getKey());
tournamentController.get().rejoin(next.getKey());
} else {
iterator.remove(); // tournament has ended meanwhile
}
Expand Down
9 changes: 2 additions & 7 deletions Mage.Server/src/main/java/mage/server/UserManager.java
Expand Up @@ -70,21 +70,16 @@ public Optional<User> getUserByName(String userName) {
final Lock r = lock.readLock();
r.lock();
try {
Optional<User> u = users.values().stream().filter(user -> user.getName().equals(userName))
return users.values().stream().filter(user -> user.getName().equals(userName))
.findFirst();
if (u.isPresent()) {
return u;
} else {
return Optional.empty();
}
} finally {
r.unlock();
}

}

public Collection<User> getUsers() {
ArrayList<User> userList = new ArrayList<>();
List<User> userList = new ArrayList<>();
final Lock r = lock.readLock();
r.lock();
try {
Expand Down
Expand Up @@ -16,8 +16,8 @@ public enum TournamentManager {
instance;
private final ConcurrentHashMap<UUID, TournamentController> controllers = new ConcurrentHashMap<>();

public TournamentController getTournamentController(UUID tournamentId) {
return controllers.get(tournamentId);
public Optional<TournamentController> getTournamentController(UUID tournamentId) {
return Optional.ofNullable(controllers.get(tournamentId));
}

public void createTournamentSession(Tournament tournament, ConcurrentHashMap<UUID, UUID> userPlayerMap, UUID tableId) {
Expand Down
12 changes: 8 additions & 4 deletions Mage.Sets/src/mage/cards/f/FleshAllergy.java
Expand Up @@ -54,13 +54,13 @@ public FleshAllergy copy() {

class FleshAllergyWatcher extends Watcher {

public int creaturesDiedThisTurn = 0;
private int creaturesDiedThisTurn = 0;

public FleshAllergyWatcher() {
super(FleshAllergyWatcher.class, WatcherScope.GAME);
}

public FleshAllergyWatcher(final FleshAllergyWatcher watcher) {
private FleshAllergyWatcher(final FleshAllergyWatcher watcher) {
super(watcher);
}

Expand All @@ -79,6 +79,10 @@ public void watch(GameEvent event, Game game) {
}
}

public int getCreaturesDiedThisTurn(){
return creaturesDiedThisTurn;
}

@Override
public void reset() {
super.reset();
Expand All @@ -94,7 +98,7 @@ public FleshAllergyEffect() {
staticText = "Its controller loses life equal to the number of creatures that died this turn";
}

public FleshAllergyEffect(final FleshAllergyEffect effect) {
private FleshAllergyEffect(final FleshAllergyEffect effect) {
super(effect);
}

Expand All @@ -110,7 +114,7 @@ public boolean apply(Game game, Ability source) {
if (permanent != null && watcher != null) {
Player player = game.getPlayer(permanent.getControllerId());
if (player != null) {
int amount = watcher.creaturesDiedThisTurn;
int amount = watcher.getCreaturesDiedThisTurn();
if (amount > 0) {
player.loseLife(amount, game, false);
return true;
Expand Down

0 comments on commit 50f28a2

Please sign in to comment.