From ab8e90c250209889dbb8d45a70c31b836841e4d9 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 7 Jan 2017 20:07:56 -0500 Subject: [PATCH] Clean up timings code --- .../java/co/aikar/commands/CommandUtil.java | 33 ++++++++++++++----- ...{AikarTiming.java => MinecraftTiming.java} | 4 +-- 2 files changed, 26 insertions(+), 11 deletions(-) rename src/main/java/co/aikar/commands/{AikarTiming.java => MinecraftTiming.java} (93%) diff --git a/src/main/java/co/aikar/commands/CommandUtil.java b/src/main/java/co/aikar/commands/CommandUtil.java index 9189e737..82c294b4 100644 --- a/src/main/java/co/aikar/commands/CommandUtil.java +++ b/src/main/java/co/aikar/commands/CommandUtil.java @@ -864,25 +864,40 @@ final class CommandUtil { throw (T) t; } - static int hasTimings = -1; + static TimingType timingProvider; public static synchronized CommandTiming getTiming(BaseCommand cmd, String command) { - if (hasTimings == -1) { + if (timingProvider == null) { try { Class.forName("co.aikar.timings.Timing"); - hasTimings = 1; + timingProvider = TimingType.MINECRAFT; } catch (ClassNotFoundException ignored1) { try { Class.forName("org.spigotmc.CustomTimingsHandler"); - hasTimings = 2; + timingProvider = TimingType.SPIGOT; } catch (ClassNotFoundException ignored2) { - hasTimings = 0; + timingProvider = TimingType.EMPTY; } } } - if (hasTimings > 0) { - final String name = "Command: " + command; - return hasTimings == 1 ? new AikarTiming(cmd, name): new SpigotTiming(name); + return timingProvider.newTiming(cmd, command); + } + private enum TimingType { + SPIGOT() { + @Override + CommandTiming newTiming(BaseCommand cmd, String command) { + return new SpigotTiming(command); + } + }, + MINECRAFT() { + @Override + CommandTiming newTiming(BaseCommand cmd, String command) { + return new MinecraftTiming(cmd, command); + } + }, + EMPTY(); + + CommandTiming newTiming(BaseCommand cmd, String command) { + return new EmptyTiming(); } - return new EmptyTiming(); } } diff --git a/src/main/java/co/aikar/commands/AikarTiming.java b/src/main/java/co/aikar/commands/MinecraftTiming.java similarity index 93% rename from src/main/java/co/aikar/commands/AikarTiming.java rename to src/main/java/co/aikar/commands/MinecraftTiming.java index 2dd76002..1eb70cf4 100644 --- a/src/main/java/co/aikar/commands/AikarTiming.java +++ b/src/main/java/co/aikar/commands/MinecraftTiming.java @@ -26,9 +26,9 @@ package co.aikar.commands; import co.aikar.timings.Timing; import co.aikar.timings.Timings; -class AikarTiming implements CommandTiming { +class MinecraftTiming implements CommandTiming { private final Timing timing; - AikarTiming(BaseCommand command, String name) { + MinecraftTiming(BaseCommand command, String name) { super(); this.timing = Timings.of(command.getPlugin(), name); }