From e82d1b58856a672684105948c6bc1a803146b7ce Mon Sep 17 00:00:00 2001 From: samczsun Date: Thu, 12 Jan 2017 20:06:28 -0500 Subject: [PATCH] Remove spigot as a dependency from ServerData --- .../bungee/playerTracker/PlayerTracker.java | 3 +- .../core/status/ServerStatusManager.java | 70 +++++++++++++++++- Plugins/Mineplex.ServerData/pom.xml | 4 -- .../src/mineplex/serverdata/Utility.java | 71 ++----------------- .../commands/ServerCommandManager.java | 14 +++- 5 files changed, 86 insertions(+), 76 deletions(-) diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java index 923f627a0..a8370432b 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.UUID; import com.google.common.collect.Lists; +import com.google.gson.Gson; import mineplex.serverdata.Region; import mineplex.serverdata.commands.PlayerJoinCommand; @@ -42,7 +43,7 @@ public class PlayerTracker implements Listener _repository = new RedisDataRepository(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(), Region.currentRegion(), PlayerStatus.class, "playerStatus"); - ServerCommandManager.getInstance().initializeServer("BUNGEE ENABLE - " + System.currentTimeMillis()); + ServerCommandManager.getInstance().initializeServer("BUNGEE ENABLE - " + System.currentTimeMillis(), new Gson()); ServerCommandManager.getInstance().registerCommandType(mineplex.serverdata.commands.PlayerJoinCommand.class, new PlayerJoinHandler(this)); System.out.println("Initialized PlayerTracker."); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java index e4109626e..65babb995 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java @@ -1,7 +1,9 @@ package mineplex.core.status; import java.io.File; +import java.lang.reflect.Type; import java.util.Collection; +import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -9,6 +11,19 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.plugin.java.JavaPlugin; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.PropertyMap; +import com.mojang.util.UUIDTypeAdapter; + import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.Callback; @@ -26,6 +41,12 @@ import mineplex.serverdata.servers.ServerRepository; public class ServerStatusManager extends MiniPlugin { + private static final Gson GSON = new GsonBuilder() + .registerTypeAdapter(GameProfile.class, new GameProfileSerializer()) + .registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()) + .registerTypeAdapter(UUID.class, new UUIDTypeAdapter()) + .create(); + // The default timeout (in seconds) before the ServerStatus expires. public final int DEFAULT_SERVER_TIMEOUT = 30; @@ -57,7 +78,7 @@ public class ServerStatusManager extends MiniPlugin _region = plugin.getConfig().getBoolean("serverstatus.us") ? Region.US : Region.EU; - ServerCommandManager.getInstance().initializeServer(_name); + ServerCommandManager.getInstance().initializeServer(_name, GSON); ServerCommandManager.getInstance().registerCommandType("SuicideCommand", SuicideCommand.class, new SuicideHandler(this, _name, _region)); _repository = ServerManager.getServerRepository(_region); @@ -210,4 +231,51 @@ public class ServerStatusManager extends MiniPlugin _enabled = false; saveServerStatus(); } + + + + private static class GameProfileSerializer implements JsonSerializer, JsonDeserializer + { + private GameProfileSerializer() + { + } + + public GameProfile deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException + { + JsonObject var4 = (JsonObject) var1; + UUID var5 = var4.has("id") ? (UUID) var3.deserialize(var4.get("id"), UUID.class) : null; + String var6 = var4.has("name") ? var4.getAsJsonPrimitive("name").getAsString() : null; + GameProfile gameProfile = new GameProfile(var5, var6); + + if (var4.has("properties")) + { + PropertyMap propertyMap = var3.deserialize(var4.get("properties"), PropertyMap.class); + gameProfile.getProperties().putAll(propertyMap); + } + + return gameProfile; + } + + public JsonElement serialize(GameProfile var1, Type var2, JsonSerializationContext var3) + { + JsonObject var4 = new JsonObject(); + + if (var1.getId() != null) + { + var4.add("id", var3.serialize(var1.getId())); + } + + if (var1.getName() != null) + { + var4.addProperty("name", var1.getName()); + } + + if (var1.getProperties() != null) + { + var4.add("properties", var3.serialize(var1.getProperties())); + } + + return var4; + } + } } diff --git a/Plugins/Mineplex.ServerData/pom.xml b/Plugins/Mineplex.ServerData/pom.xml index a407f6de4..84a00934c 100644 --- a/Plugins/Mineplex.ServerData/pom.xml +++ b/Plugins/Mineplex.ServerData/pom.xml @@ -28,10 +28,6 @@ redis.clients jedis - - com.mineplex - spigot - org.jooq jooq diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java index 6838a7df8..a8f3b2575 100644 --- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java @@ -1,28 +1,15 @@ package mineplex.serverdata; -import java.lang.reflect.Type; -import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import com.google.gson.Gson; + import mineplex.serverdata.servers.ConnectionData; import mineplex.serverdata.servers.ServerManager; + import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; -import redis.clients.jedis.exceptions.JedisConnectionException; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.PropertyMap; -import com.mojang.util.UUIDTypeAdapter; /** * Utility offers various necessary utility-based methods for use in Mineplex.ServerData. @@ -35,11 +22,7 @@ public class Utility private static long _millisTimeDifference; // The Gson instance used to serialize/deserialize objects in JSON form. - private static Gson _gson = new GsonBuilder() - .registerTypeAdapter(GameProfile.class, new GameProfileSerializer()) - .registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()) - .registerTypeAdapter(UUID.class, new UUIDTypeAdapter()) - .create(); + private static Gson _gson = new Gson(); public static Gson getGson() { return _gson; } // map of all instantiated connection pools, distinguished by their ip:port combination @@ -187,50 +170,4 @@ public class Utility _millisTimeDifference = (currentTime * 1000) - System.currentTimeMillis(); } - - - private static class GameProfileSerializer implements JsonSerializer, JsonDeserializer - { - private GameProfileSerializer() - { - } - - public GameProfile deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException - { - JsonObject var4 = (JsonObject) var1; - UUID var5 = var4.has("id") ? (UUID) var3.deserialize(var4.get("id"), UUID.class) : null; - String var6 = var4.has("name") ? var4.getAsJsonPrimitive("name").getAsString() : null; - GameProfile gameProfile = new GameProfile(var5, var6); - - if (var4.has("properties")) - { - PropertyMap propertyMap = var3.deserialize(var4.get("properties"), PropertyMap.class); - gameProfile.getProperties().putAll(propertyMap); - } - - return gameProfile; - } - - public JsonElement serialize(GameProfile var1, Type var2, JsonSerializationContext var3) - { - JsonObject var4 = new JsonObject(); - - if (var1.getId() != null) - { - var4.add("id", var3.serialize(var1.getId())); - } - - if (var1.getName() != null) - { - var4.addProperty("name", var1.getName()); - } - - if (var1.getProperties() != null) - { - var4.add("properties", var3.serialize(var1.getProperties())); - } - - return var4; - } - } } diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/ServerCommandManager.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/ServerCommandManager.java index b0b45e06d..259a5ef5f 100644 --- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/ServerCommandManager.java +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/ServerCommandManager.java @@ -3,6 +3,8 @@ package mineplex.serverdata.commands; import java.util.HashMap; import java.util.Map; +import com.google.gson.Gson; + import mineplex.serverdata.Utility; import mineplex.serverdata.servers.ServerManager; import redis.clients.jedis.Jedis; @@ -23,7 +25,13 @@ public class ServerCommandManager private Map _commandTypes; private String _localServerName; - public void initializeServer(String serverName) { _localServerName = serverName; } + private Gson _gson; + public void initializeServer(String serverName, Gson gson) + { + _localServerName = serverName; + _gson = gson; + } + public boolean isServerInitialized() { return _localServerName != null; } public String getServerName() { @@ -75,7 +83,7 @@ public class ServerCommandManager public void run() { String commandType = serverCommand.getClass().getSimpleName(); - String serializedCommand = Utility.serialize(serverCommand); + String serializedCommand = _gson.toJson(serverCommand); try(Jedis jedis = _writePool.getResource()) { @@ -101,7 +109,7 @@ public class ServerCommandManager if (_commandTypes.containsKey(commandType)) { Class commandClazz = _commandTypes.get(commandType).getCommandType(); - final ServerCommand serverCommand = Utility.deserialize(serializedCommand, commandClazz); + final ServerCommand serverCommand = _gson.fromJson(serializedCommand, commandClazz); if (serverCommand.isTargetServer(_localServerName)) {