From 37000854be63f7868225acc3cc4cf561af7f2672 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Mon, 11 May 2015 23:10:02 +0200 Subject: [PATCH] Fix a couple of performance issues. --- .../cmd/arg/ARSenderIdAbstract.java | 19 +++++++++---- .../massivecore/fetcher/Fetcher.java | 2 +- .../massivecraft/massivecore/util/IdUtil.java | 28 ++++--------------- .../massivecraft/massivecore/util/MUtil.java | 22 +++++++++++---- .../util/extractor/ExtractorLogic.java | 2 +- 5 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/com/massivecraft/massivecore/cmd/arg/ARSenderIdAbstract.java b/src/com/massivecraft/massivecore/cmd/arg/ARSenderIdAbstract.java index 5984d5a9..40751bdf 100644 --- a/src/com/massivecraft/massivecore/cmd/arg/ARSenderIdAbstract.java +++ b/src/com/massivecraft/massivecore/cmd/arg/ARSenderIdAbstract.java @@ -82,7 +82,7 @@ public abstract class ARSenderIdAbstract extends ARAbstract { // Allow names and uuid by format. if (MUtil.isValidPlayerName(arg)) return true; - if (MUtil.isValidUUID(arg)) return true; + if (MUtil.isUuid(arg)) return true; // Check data presence. This handles specials like "@console". if (IdUtil.getIdToData().containsKey(arg)) return true; @@ -98,11 +98,20 @@ public abstract class ARSenderIdAbstract extends ARAbstract Set ret = new TreeSet(String.CASE_INSENSITIVE_ORDER); // Fill Ret - Set names = (online ? IdUtil.getOnlineNames() : IdUtil.getAllNames()); - for (String name : names) + Set names; + if (online) { - if ( ! Mixin.canSee(sender, name)) continue; - ret.add(name); + names = IdUtil.getOnlineNames(); + for (String name : names) + { + if ( ! Mixin.canSee(sender, name)) continue; + ret.add(name); + } + } + else + { + names = IdUtil.getAllNames(); + ret.addAll(names); } // Return Ret diff --git a/src/com/massivecraft/massivecore/fetcher/Fetcher.java b/src/com/massivecraft/massivecore/fetcher/Fetcher.java index 4215ba6d..7ed04437 100644 --- a/src/com/massivecraft/massivecore/fetcher/Fetcher.java +++ b/src/com/massivecraft/massivecore/fetcher/Fetcher.java @@ -70,7 +70,7 @@ public class Fetcher implements Callable> { names.add(string); } - else if (MUtil.isValidUUID(string)) + else if (MUtil.isUuid(string)) { ids.add(UUID.fromString(string)); } diff --git a/src/com/massivecraft/massivecore/util/IdUtil.java b/src/com/massivecraft/massivecore/util/IdUtil.java index 5f23fb19..b478e25b 100644 --- a/src/com/massivecraft/massivecore/util/IdUtil.java +++ b/src/com/massivecraft/massivecore/util/IdUtil.java @@ -522,7 +522,7 @@ public class IdUtil implements Listener, Runnable { // Recurse as UUID String string = (String)senderObject; - UUID uuid = uuidFromString(string); + UUID uuid = MUtil.asUuid(string); if (uuid != null) return getSender(uuid); // Registry @@ -566,7 +566,7 @@ public class IdUtil implements Listener, Runnable { CommandSender sender = (CommandSender)senderObject; String id = sender.getName(); - return uuidFromString(id); + return MUtil.asUuid(id); } // UUID @@ -577,7 +577,7 @@ public class IdUtil implements Listener, Runnable { // Is UUID String string = (String)senderObject; - UUID uuid = uuidFromString(string); + UUID uuid = MUtil.asUuid(string); if (uuid != null) return uuid; // Is Name @@ -590,7 +590,7 @@ public class IdUtil implements Listener, Runnable { String id = data.getId(); if (id == null) return null; - UUID uuid = uuidFromString(id); + UUID uuid = MUtil.asUuid(id); return uuid; } @@ -605,7 +605,7 @@ public class IdUtil implements Listener, Runnable if (senderObject == null) return null; // Already Done - if (senderObject instanceof String && MUtil.isValidUUID((String)senderObject)) return (String)senderObject; + if (senderObject instanceof String && MUtil.isUuid((String)senderObject)) return (String)senderObject; // Console Type if (senderObject instanceof ConsoleCommandSender) return CONSOLE_ID; @@ -721,7 +721,7 @@ public class IdUtil implements Listener, Runnable public static boolean isPlayerId(String string) { // NOTE: Assuming all custom ids look like "@shite". - return MUtil.isValidPlayerName(string) || MUtil.isValidUUID(string); + return MUtil.isValidPlayerName(string) || MUtil.isUuid(string); } public static boolean isPlayer(Object senderObject) @@ -964,20 +964,4 @@ public class IdUtil implements Listener, Runnable return ret; } - // -------------------------------------------- // - // UTIL - // -------------------------------------------- // - - public static UUID uuidFromString(String string) - { - try - { - return UUID.fromString(string); - } - catch (IllegalArgumentException e) - { - return null; - } - } - } diff --git a/src/com/massivecraft/massivecore/util/MUtil.java b/src/com/massivecraft/massivecore/util/MUtil.java index e7ead1b9..40ef652b 100644 --- a/src/com/massivecraft/massivecore/util/MUtil.java +++ b/src/com/massivecraft/massivecore/util/MUtil.java @@ -180,23 +180,33 @@ public class MUtil } // -------------------------------------------- // - // IS VALID UUID + // UUID // -------------------------------------------- // - public static boolean isValidUUID(String string) + public static UUID asUuid(String string) { - if (string == null) return false; + // Null + if (string == null) return null; + + // Avoid Exception + if (string.length() != 36) return null; + + // Try try { - UUID.fromString(string); - return true; + return UUID.fromString(string); } catch (Exception e) { - return false; + return null; } } + public static boolean isUuid(String string) + { + return asUuid(string) != null; + } + // -------------------------------------------- // // STACK TRACE: GET // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java b/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java index c76a0b4d..c6085bdf 100644 --- a/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java +++ b/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java @@ -176,7 +176,7 @@ public class ExtractorLogic if (o instanceof String) { String string = (String)o; - if (MUtil.isValidUUID(string)) + if (MUtil.isUuid(string)) { String ret = worldNameViaPsMixin(string); if (ret != null) return ret;