From c54989e0befc3b021627925f1317a6d6802671c9 Mon Sep 17 00:00:00 2001 From: Chris Kearney <chris@kearneymail.com> Date: Sun, 7 May 2017 09:05:50 -0700 Subject: [PATCH] sharing gson isntances in the serializers and upgraded mapdb/gson versions --- pom.xml | 4 ++-- src/main/java/com/comandante/creeper/Main.java | 8 +++++++- .../java/com/comandante/creeper/entity/EntityManager.java | 1 + .../com/comandante/creeper/items/EffectSerializer.java | 8 ++++++-- .../java/com/comandante/creeper/items/ItemSerializer.java | 8 ++++++-- .../java/com/comandante/creeper/player/PlayerManager.java | 6 +++++- .../creeper/player/PlayerMetadataSerializer.java | 7 +++++-- .../com/comandante/creeper/player/PlayerManagerTest.java | 2 ++ .../creeper/player/combat_simuation/NpcTestHarness.java | 3 +++ 9 files changed, 37 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 11d70363..9e057403 100644 --- a/pom.xml +++ b/pom.xml @@ -53,12 +53,12 @@ <dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> - <version>1.0.6</version> + <version>1.0.9</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.2.4</version> + <version>2.8.0</version> </dependency> <dependency> <groupId>org.ow2.sirocco</groupId> diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java index 2a763abb..62746b7d 100644 --- a/src/main/java/com/comandante/creeper/Main.java +++ b/src/main/java/com/comandante/creeper/Main.java @@ -19,6 +19,8 @@ import com.comandante.creeper.storage.WorldStorage; import com.comandante.creeper.world.MapsManager; import com.comandante.creeper.world.RoomManager; import com.google.common.io.Files; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import org.apache.commons.codec.binary.Base64; import org.apache.commons.configuration.*; import org.apache.log4j.Logger; @@ -79,7 +81,11 @@ public class Main { Files.isDirectory().apply(new File("world/")); - DB db = DBMaker.newFileDB(new File("world/" + creeperConfiguration.databaseFileName)).closeOnJvmShutdown().make(); + DB db = DBMaker.newFileDB(new File("world/" + creeperConfiguration.databaseFileName)) + .closeOnJvmShutdown() + .make(); + + Gson gson = new GsonBuilder().create(); PlayerManager playerManager = new PlayerManager(db, new SessionManager()); playerManager.createAllGauges(); diff --git a/src/main/java/com/comandante/creeper/entity/EntityManager.java b/src/main/java/com/comandante/creeper/entity/EntityManager.java index b7d88a3a..dece67f9 100644 --- a/src/main/java/com/comandante/creeper/entity/EntityManager.java +++ b/src/main/java/com/comandante/creeper/entity/EntityManager.java @@ -11,6 +11,7 @@ import com.comandante.creeper.player.Player; import com.comandante.creeper.player.PlayerManager; import com.comandante.creeper.world.RoomManager; import com.comandante.creeper.world.model.Room; +import com.google.gson.Gson; import org.apache.log4j.Logger; import org.mapdb.DB; import org.mapdb.HTreeMap; diff --git a/src/main/java/com/comandante/creeper/items/EffectSerializer.java b/src/main/java/com/comandante/creeper/items/EffectSerializer.java index 16f7e9e5..b4ce934c 100644 --- a/src/main/java/com/comandante/creeper/items/EffectSerializer.java +++ b/src/main/java/com/comandante/creeper/items/EffectSerializer.java @@ -1,5 +1,6 @@ package com.comandante.creeper.items; +import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.mapdb.Serializer; @@ -9,14 +10,17 @@ import java.io.IOException; import java.io.Serializable; public class EffectSerializer implements Serializer<Effect>, Serializable { + + private final static Gson GSON = new GsonBuilder().create(); + @Override public void serialize(DataOutput out, Effect value) throws IOException { - out.writeUTF(new GsonBuilder().create().toJson(value, Effect.class)); + out.writeUTF(GSON.toJson(value, Effect.class)); } @Override public Effect deserialize(DataInput in, int available) throws IOException { - return new GsonBuilder().create().fromJson(in.readUTF(), Effect.class); + return GSON.fromJson(in.readUTF(), Effect.class); } @Override diff --git a/src/main/java/com/comandante/creeper/items/ItemSerializer.java b/src/main/java/com/comandante/creeper/items/ItemSerializer.java index 4ef367d4..7b911ff0 100644 --- a/src/main/java/com/comandante/creeper/items/ItemSerializer.java +++ b/src/main/java/com/comandante/creeper/items/ItemSerializer.java @@ -1,5 +1,6 @@ package com.comandante.creeper.items; +import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.mapdb.Serializer; @@ -9,14 +10,17 @@ import java.io.IOException; import java.io.Serializable; public class ItemSerializer implements Serializer<Item>, Serializable { + + private final static Gson GSON = new GsonBuilder().create(); + @Override public void serialize(DataOutput out, Item value) throws IOException { - out.writeUTF(new GsonBuilder().create().toJson(value, Item.class)); + out.writeUTF(GSON.toJson(value, Item.class)); } @Override public Item deserialize(DataInput in, int available) throws IOException { - return new GsonBuilder().create().fromJson(in.readUTF(), Item.class); + return GSON.fromJson(in.readUTF(), Item.class); } @Override diff --git a/src/main/java/com/comandante/creeper/player/PlayerManager.java b/src/main/java/com/comandante/creeper/player/PlayerManager.java index fe56f01d..c00297e9 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerManager.java +++ b/src/main/java/com/comandante/creeper/player/PlayerManager.java @@ -6,6 +6,7 @@ import com.comandante.creeper.Main; import com.comandante.creeper.core_game.SessionManager; import com.comandante.creeper.storage.MapDbAutoCommitService; import com.comandante.creeper.world.model.Room; +import com.google.gson.Gson; import org.apache.commons.codec.binary.Base64; import org.mapdb.DB; import org.mapdb.HTreeMap; @@ -30,7 +31,10 @@ public class PlayerManager { if (db.exists("playerMetadata")) { this.playerMetadataStore = db.get("playerMetadata"); } else { - this.playerMetadataStore = db.createHashMap("playerMetadata").valueSerializer(new PlayerMetadataSerializer()).make(); + this.playerMetadataStore = db + .createHashMap("playerMetadata") + .valueSerializer(new PlayerMetadataSerializer()) + .make(); } MapDbAutoCommitService mapDbAutoCommitService = new MapDbAutoCommitService(db); mapDbAutoCommitService.startAsync(); diff --git a/src/main/java/com/comandante/creeper/player/PlayerMetadataSerializer.java b/src/main/java/com/comandante/creeper/player/PlayerMetadataSerializer.java index 17691677..fdc2f58f 100644 --- a/src/main/java/com/comandante/creeper/player/PlayerMetadataSerializer.java +++ b/src/main/java/com/comandante/creeper/player/PlayerMetadataSerializer.java @@ -1,5 +1,6 @@ package com.comandante.creeper.player; +import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.mapdb.Serializer; @@ -10,14 +11,16 @@ import java.io.Serializable; public class PlayerMetadataSerializer implements Serializer<PlayerMetadata>, Serializable { + private final static Gson GSON = new GsonBuilder().create(); + @Override public void serialize(DataOutput out, PlayerMetadata value) throws IOException { - out.writeUTF(new GsonBuilder().create().toJson(value, PlayerMetadata.class)); + out.writeUTF(GSON.toJson(value, PlayerMetadata.class)); } @Override public PlayerMetadata deserialize(DataInput in, int available) throws IOException { - return new GsonBuilder().create().fromJson(in.readUTF(), PlayerMetadata.class); + return GSON.fromJson(in.readUTF(), PlayerMetadata.class); } @Override diff --git a/src/test/com/comandante/creeper/player/PlayerManagerTest.java b/src/test/com/comandante/creeper/player/PlayerManagerTest.java index 4b6d0f17..b3daba5e 100644 --- a/src/test/com/comandante/creeper/player/PlayerManagerTest.java +++ b/src/test/com/comandante/creeper/player/PlayerManagerTest.java @@ -3,6 +3,8 @@ package com.comandante.creeper.player; import com.comandante.creeper.core_game.SessionManager; import com.comandante.creeper.world.model.Room; import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java index 1287198e..31b66a18 100644 --- a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java +++ b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java @@ -22,6 +22,8 @@ import com.comandante.creeper.world.MapsManager; import com.comandante.creeper.world.RoomManager; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import org.apache.commons.configuration.MapConfiguration; import org.jboss.netty.channel.Channel; import org.junit.Assert; @@ -301,6 +303,7 @@ public class NpcTestHarness { }; CreeperConfiguration creeperConfiguration = new CreeperConfiguration(new MapConfiguration(Maps.newHashMap())); DB db = DBMaker.newMemoryDB().closeOnJvmShutdown().make(); + Gson gson = new GsonBuilder().create(); PlayerManager playerManager = new PlayerManager(db, new SessionManager()); RoomManager roomManager = new RoomManager(playerManager); MapsManager mapsManager = new MapsManager(creeperConfiguration, roomManager); -- GitLab