From 15886fb517fc0aa8c9e2a7ca04f48527aa4ee339 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Wed, 15 Jun 2016 20:37:00 +0200 Subject: [PATCH] #723 Let LimboPlayer task manager decide which message key to use - Pass boolean (is registered) value and determine internally which message key (email registration vs. regular) to use in the message task --- .../authme/UnregisterAdminCommand.java | 5 ++--- .../authme/process/join/AsynchronousJoin.java | 11 +--------- .../process/login/AsynchronousLogin.java | 7 +----- .../ProcessSynchronousPlayerLogout.java | 2 +- .../register/ProcessSyncEmailRegister.java | 2 +- .../register/ProcessSyncPasswordRegister.java | 2 +- .../unregister/AsynchronousUnregister.java | 2 +- .../authme/task/LimboPlayerTaskManager.java | 22 +++++++++++++++++-- .../task/LimboPlayerTaskManagerTest.java | 20 ++++++++--------- 9 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java index 064ea5363..2e746f0dd 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java @@ -93,13 +93,12 @@ public class UnregisterAdminCommand implements ExecutableCommand { * @param target the player that was unregistered */ private void applyUnregisteredEffectsAndTasks(Player target) { - // TODO ljacqu 20160612: Remove use of Utils method and behave according to settings + // TODO #765: Remove use of Utils method and behave according to settings Utils.teleportToSpawn(target); limboCache.addLimboPlayer(target); limboPlayerTaskManager.registerTimeoutTask(target); - limboPlayerTaskManager.registerMessageTask(target.getName(), - MessageKey.REGISTER_MESSAGE); + limboPlayerTaskManager.registerMessageTask(target.getName(), false); final int timeout = commandService.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND; if (commandService.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) { diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index 5d1c2fca4..cf1741c1b 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -195,16 +195,7 @@ public class AsynchronousJoin implements AsynchronousProcess { // Timeout and message task limboPlayerTaskManager.registerTimeoutTask(player); - - MessageKey msg; - if (isAuthAvailable) { - msg = MessageKey.LOGIN_MESSAGE; - } else { - msg = service.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION) - ? MessageKey.REGISTER_EMAIL_MESSAGE - : MessageKey.REGISTER_MESSAGE; - } - limboPlayerTaskManager.registerMessageTask(name, msg); + limboPlayerTaskManager.registerMessageTask(name, isAuthAvailable); } private boolean isPlayerUnrestricted(String name) { diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index 33b6defad..18e7e8e4d 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -21,7 +21,6 @@ import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; -import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.task.LimboPlayerTaskManager; @@ -33,7 +32,6 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Player; import javax.inject.Inject; - import java.util.ArrayList; import java.util.List; @@ -108,10 +106,7 @@ public class AsynchronousLogin implements AsynchronousProcess { service.send(player, MessageKey.USER_NOT_REGISTERED); // TODO ljacqu 20160612: Why is the message task being canceled and added again here? - MessageKey key = service.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION) - ? MessageKey.REGISTER_EMAIL_MESSAGE - : MessageKey.REGISTER_MESSAGE; - limboPlayerTaskManager.registerMessageTask(name, key); + limboPlayerTaskManager.registerMessageTask(name, false); return null; } diff --git a/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java b/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java index cd8eb3b3e..c70f4cd08 100644 --- a/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java +++ b/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java @@ -66,7 +66,7 @@ public class ProcessSynchronousPlayerLogout implements SynchronousProcess { } limboPlayerTaskManager.registerTimeoutTask(player); - limboPlayerTaskManager.registerMessageTask(name, MessageKey.LOGIN_MESSAGE); + limboPlayerTaskManager.registerMessageTask(name, true); if (player.isInsideVehicle() && player.getVehicle() != null) { player.getVehicle().eject(); diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java index 15901606d..41d8fe978 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java @@ -33,7 +33,7 @@ public class ProcessSyncEmailRegister implements SynchronousProcess { service.send(player, MessageKey.ACCOUNT_NOT_ACTIVATED); limboPlayerTaskManager.registerTimeoutTask(player); - limboPlayerTaskManager.registerMessageTask(name, MessageKey.LOGIN_MESSAGE); + limboPlayerTaskManager.registerMessageTask(name, true); player.saveData(); if (!service.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE)) { diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java index d8f790e58..16f1ad360 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java @@ -81,7 +81,7 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { limboCache.updateLimboPlayer(player); limboPlayerTaskManager.registerTimeoutTask(player); - limboPlayerTaskManager.registerMessageTask(name, MessageKey.LOGIN_MESSAGE); + limboPlayerTaskManager.registerMessageTask(name, true); if (player.isInsideVehicle() && player.getVehicle() != null) { player.getVehicle().eject(); diff --git a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java index 87cb4808a..b9b872527 100644 --- a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java +++ b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java @@ -64,7 +64,7 @@ public class AsynchronousUnregister implements AsynchronousProcess { } limboCache.addLimboPlayer(player); limboPlayerTaskManager.registerTimeoutTask(player); - limboPlayerTaskManager.registerMessageTask(name, MessageKey.REGISTER_MESSAGE); + limboPlayerTaskManager.registerMessageTask(name, false); service.send(player, MessageKey.UNREGISTERED_SUCCESS); ConsoleLogger.info(player.getDisplayName() + " unregistered himself"); diff --git a/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java b/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java index e1a95603f..36530c998 100644 --- a/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java +++ b/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java @@ -44,10 +44,12 @@ public class LimboPlayerTaskManager { * Registers a {@link MessageTask} for the given player name. * * @param name the name of the player to schedule a repeating message task for - * @param key the key of the message to display + * @param isRegistered whether the name is registered or not + * (false shows "please register", true shows "please log in") */ - public void registerMessageTask(String name, MessageKey key) { + public void registerMessageTask(String name, boolean isRegistered) { final int interval = settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL); + final MessageKey key = getMessageKey(isRegistered); if (interval > 0) { final LimboPlayer limboPlayer = limboCache.getLimboPlayer(name); if (limboPlayer == null) { @@ -81,6 +83,22 @@ public class LimboPlayerTaskManager { } } + /** + * Returns the appropriate message key according to the registration status and settings. + * + * @param isRegistered whether or not the username is registered + * @return the message key to display to the user + */ + private MessageKey getMessageKey(boolean isRegistered) { + if (isRegistered) { + return MessageKey.LOGIN_MESSAGE; + } else { + return settings.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION) + ? MessageKey.REGISTER_EMAIL_MESSAGE + : MessageKey.REGISTER_MESSAGE; + } + } + /** * Null-safe method to cancel a potentially existing task. * diff --git a/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java b/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java index b03299278..51e390c40 100644 --- a/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java +++ b/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java @@ -67,9 +67,10 @@ public class LimboPlayerTaskManagerTest { BukkitTask bukkiTask = mock(BukkitTask.class); given(bukkitService.runTask(any(MessageTask.class))).willReturn(bukkiTask); given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(12); + given(settings.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true); // when - limboPlayerTaskManager.registerMessageTask(name, key); + limboPlayerTaskManager.registerMessageTask(name, false); // then verify(limboPlayer).setMessageTask(bukkiTask); @@ -81,12 +82,10 @@ public class LimboPlayerTaskManagerTest { // given String name = "ghost"; given(limboCache.getLimboPlayer(name)).willReturn(null); - MessageKey key = MessageKey.REGISTER_MESSAGE; - given(messages.retrieve(key)).willReturn(new String[]{"Please register!"}); given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(5); // when - limboPlayerTaskManager.registerMessageTask(name, key); + limboPlayerTaskManager.registerMessageTask(name, true); // then verify(limboCache).getLimboPlayer(name); @@ -100,14 +99,12 @@ public class LimboPlayerTaskManagerTest { String name = "Tester1"; LimboPlayer limboPlayer = mock(LimboPlayer.class); given(limboCache.getLimboPlayer(name)).willReturn(limboPlayer); - MessageKey key = MessageKey.REGISTER_EMAIL_MESSAGE; - given(messages.retrieve(key)).willReturn(new String[]{"Please register!"}); BukkitTask bukkiTask = mock(BukkitTask.class); given(bukkitService.runTask(any(MessageTask.class))).willReturn(bukkiTask); given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(0); // when - limboPlayerTaskManager.registerMessageTask(name, key); + limboPlayerTaskManager.registerMessageTask(name, true); // then verifyZeroInteractions(limboPlayer, bukkitService); @@ -122,19 +119,20 @@ public class LimboPlayerTaskManagerTest { String name = "bobby"; given(limboCache.getLimboPlayer(name)).willReturn(limboPlayer); - MessageKey key = MessageKey.REGISTER_EMAIL_MESSAGE; - given(messages.retrieve(key)).willReturn(new String[]{"Please register", "Use /register"}); + given(messages.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE)) + .willReturn(new String[]{"Please register", "Use /register"}); BukkitTask bukkiTask = mock(BukkitTask.class); given(bukkitService.runTask(any(MessageTask.class))).willReturn(bukkiTask); given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(8); + given(settings.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true); // when - limboPlayerTaskManager.registerMessageTask(name, key); + limboPlayerTaskManager.registerMessageTask(name, false); // then verify(limboPlayer).setMessageTask(bukkiTask); - verify(messages).retrieve(key); + verify(messages).retrieve(MessageKey.REGISTER_EMAIL_MESSAGE); verify(existingMessageTask).cancel(); }