From 0c9c04304a80de112dc11d11bfc72801700154af Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Mon, 4 Sep 2017 18:50:07 -0400 Subject: [PATCH] refactor: merged NpcStorage and AetherMudStorage. --- .../java/com/syncleus/aethermud/Main.java | 2 +- .../commands/admin/LoadNpcCommand.java | 4 +- .../command/commands/admin/SpawnCommand.java | 2 +- .../aethermud/configuration/ConfigureNpc.java | 2 +- .../syncleus/aethermud/core/GameManager.java | 7 -- .../aethermud/storage/AetherMudStorage.java | 10 +++ .../aethermud/storage/ItemStorage.java | 2 +- .../aethermud/storage/NpcStorage.java | 28 -------- .../graphdb/GraphDbAetherMudStorage.java | 32 +++++++-- .../storage/graphdb/GraphDbNpcStorage.java | 65 ------------------- .../common/ColorizedTextTemplateTest.java | 6 +- .../aethermud/player/PlayerManagerTest.java | 2 +- .../combatsimuation/NpcTestHarness.java | 14 ++-- 13 files changed, 55 insertions(+), 121 deletions(-) delete mode 100644 src/main/java/com/syncleus/aethermud/storage/NpcStorage.java delete mode 100644 src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbNpcStorage.java diff --git a/src/main/java/com/syncleus/aethermud/Main.java b/src/main/java/com/syncleus/aethermud/Main.java index 36fc8769..131656f7 100644 --- a/src/main/java/com/syncleus/aethermud/Main.java +++ b/src/main/java/com/syncleus/aethermud/Main.java @@ -110,7 +110,7 @@ public class Main { } WrappedFramedGraph<Graph> framedGraph = new DelegatingFramedGraph(graph, FRAMED_TYPES); - GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph); + GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph, aetherMudConfiguration.databaseFileName); graphStorage.startAsync(); graphStorage.awaitRunning(); diff --git a/src/main/java/com/syncleus/aethermud/command/commands/admin/LoadNpcCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/admin/LoadNpcCommand.java index c01e1b3a..42ca05cf 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/admin/LoadNpcCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/admin/LoadNpcCommand.java @@ -20,7 +20,7 @@ import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.npc.Npc; import com.syncleus.aethermud.player.PlayerRole; import com.syncleus.aethermud.spawner.SpawnRule; -import com.syncleus.aethermud.storage.NpcStorage; +import com.syncleus.aethermud.storage.AetherMudStorage; import com.syncleus.aethermud.storage.graphdb.NpcData; import com.google.common.collect.Sets; import org.apache.commons.beanutils.PropertyUtils; @@ -94,7 +94,7 @@ public class LoadNpcCommand extends Command { } httpGet.reset(); - NpcStorage storage = gameManager.getNpcStorage(); + AetherMudStorage storage = gameManager.getGraphStorage(); NpcData npcData = storage.newNpcData(); try { PropertyUtils.copyProperties(npcData, npc); diff --git a/src/main/java/com/syncleus/aethermud/command/commands/admin/SpawnCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/admin/SpawnCommand.java index 87032d60..ec11185b 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/admin/SpawnCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/admin/SpawnCommand.java @@ -46,7 +46,7 @@ public class SpawnCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { execCommand(ctx, e, () -> { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); if (originalMessageParts.size() == 1) { write(getHeader()); for (NpcSpawn npcSpawn : npcsFromFile) { diff --git a/src/main/java/com/syncleus/aethermud/configuration/ConfigureNpc.java b/src/main/java/com/syncleus/aethermud/configuration/ConfigureNpc.java index fa6d0c53..f3e94f99 100644 --- a/src/main/java/com/syncleus/aethermud/configuration/ConfigureNpc.java +++ b/src/main/java/com/syncleus/aethermud/configuration/ConfigureNpc.java @@ -35,7 +35,7 @@ public class ConfigureNpc { public static void configureAllNpcs(GameManager gameManager) throws IOException { EntityManager entityManager = gameManager.getEntityManager(); - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); for (NpcSpawn npcSpawn : npcsFromFile) { Main.startUpMessage("Adding npc spawn: " + npcSpawn.getName()); entityManager.addEntity(npcSpawn); diff --git a/src/main/java/com/syncleus/aethermud/core/GameManager.java b/src/main/java/com/syncleus/aethermud/core/GameManager.java index 3a8894d1..35ed0e46 100644 --- a/src/main/java/com/syncleus/aethermud/core/GameManager.java +++ b/src/main/java/com/syncleus/aethermud/core/GameManager.java @@ -39,7 +39,6 @@ import com.syncleus.aethermud.spawner.NpcSpawner; import com.syncleus.aethermud.spells.Spells; import com.syncleus.aethermud.stats.Levels; import com.syncleus.aethermud.stats.Stats; -import com.syncleus.aethermud.storage.graphdb.GraphDbNpcStorage; import com.syncleus.aethermud.stats.StatsBuilder; import com.syncleus.aethermud.stats.modifier.StatsModifierFactory; import com.syncleus.aethermud.storage.*; @@ -104,7 +103,6 @@ public class GameManager { private final Spells spells; private final MultiThreadedEventProcessor eventProcessor = new MultiThreadedEventProcessor(new ArrayBlockingQueue<>(10000)); private final Room detainmentRoom; - private final NpcStorage npcStorage; private final ItemStorage itemStorage; private final HttpClient httpclient; private final Gson gson; @@ -148,7 +146,6 @@ public class GameManager { this.detainmentRoom = buildDetainmentRoom(); this.gson = new GsonBuilder().setPrettyPrinting().create(); this.filebasedJsonStorage = new FilebasedJsonStorage(gson); - this.npcStorage = new GraphDbNpcStorage(this, framedGraph);; this.itemStorage = new ItemStorage(filebasedJsonStorage); this.merchantStorage = new MerchantStorage(this, filebasedJsonStorage); this.httpclient = httpClient; @@ -259,10 +256,6 @@ public class GameManager { return eventProcessor; } - public NpcStorage getNpcStorage() { - return npcStorage; - } - public void placePlayerInLobby(Player player) { Room room = roomManager.getRoom(LOBBY_ID); room.addPresentPlayer(player.getPlayerId()); diff --git a/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java index 7f288649..af363fad 100644 --- a/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java @@ -17,10 +17,14 @@ package com.syncleus.aethermud.storage; import com.google.common.util.concurrent.Service; +import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.storage.graphdb.ItemData; +import com.syncleus.aethermud.storage.graphdb.NpcData; import com.syncleus.aethermud.storage.graphdb.PlayerData; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -38,5 +42,11 @@ public interface AetherMudStorage extends Service { void removeItem(String itemId); + List<? extends NpcSpawn> getAllNpcs(GameManager gameManager); + + List<? extends NpcData> getNpcDatas(); + + NpcData newNpcData(); + void persist(); } diff --git a/src/main/java/com/syncleus/aethermud/storage/ItemStorage.java b/src/main/java/com/syncleus/aethermud/storage/ItemStorage.java index c603d040..74a1149a 100644 --- a/src/main/java/com/syncleus/aethermud/storage/ItemStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/ItemStorage.java @@ -28,7 +28,7 @@ public class ItemStorage { public final static String LOCAL_ITEM_DIRECTORY = "world/items/"; - private static final Logger log = Logger.getLogger(NpcStorage.class); + private static final Logger log = Logger.getLogger(ItemStorage.class); private final FilebasedJsonStorage filebasedJsonStorage; private final List<ItemMetadata> itemMetadatas; diff --git a/src/main/java/com/syncleus/aethermud/storage/NpcStorage.java b/src/main/java/com/syncleus/aethermud/storage/NpcStorage.java deleted file mode 100644 index 9412206b..00000000 --- a/src/main/java/com/syncleus/aethermud/storage/NpcStorage.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright 2017 Syncleus, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.syncleus.aethermud.storage; - -import com.syncleus.aethermud.npc.NpcSpawn; -import com.syncleus.aethermud.storage.graphdb.NpcData; - -import java.util.List; - -public interface NpcStorage { - List<? extends NpcSpawn> getAllNpcs(); - List<? extends NpcData> getNpcDatas(); - NpcData newNpcData(); - void persist(); -} diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java index 4d05d318..2602ead4 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java @@ -17,26 +17,35 @@ package com.syncleus.aethermud.storage.graphdb; import com.google.common.util.concurrent.AbstractIdleService; import com.syncleus.aethermud.Main; +import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.npc.NpcBuilder; +import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.storage.AetherMudStorage; import com.syncleus.ferma.WrappedFramedGraph; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; +import org.apache.log4j.Logger; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.IoCore; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.*; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.stream.Collectors; //TODO : multiple instances of this class could create conflicts in the DB public class GraphDbAetherMudStorage extends AbstractIdleService implements AetherMudStorage { - - + private static final Logger LOGGER = Logger.getLogger(GraphDbAetherMudStorage.class); private final WrappedFramedGraph<Graph> framedGraph; + private final String graphDbFile; + - public GraphDbAetherMudStorage(WrappedFramedGraph<Graph> framedGraph) { + public GraphDbAetherMudStorage(WrappedFramedGraph<Graph> framedGraph, String graphDbFile) { this.framedGraph = framedGraph; + this.graphDbFile = graphDbFile; } @Override @@ -73,7 +82,7 @@ public class GraphDbAetherMudStorage extends AbstractIdleService implements Aeth public void persist() { try { - this.framedGraph.getBaseGraph().io(IoCore.graphson()).writeGraph(Main.DEFAULT_GRAPH_DB_FILE); + this.framedGraph.getBaseGraph().io(IoCore.graphson()).writeGraph(this.graphDbFile); } catch (IOException e) { throw new IllegalStateException("Could not write to graph file.", e); } @@ -91,6 +100,21 @@ public class GraphDbAetherMudStorage extends AbstractIdleService implements Aeth return itemData; } + public List<? extends NpcSpawn> getAllNpcs(GameManager gameManager) { + List<? extends NpcData> npcData = this.getNpcDatas(); + return npcData.stream() + .map(metadata -> new NpcBuilder(metadata).setGameManager(gameManager).createNpc()) + .collect(Collectors.toList()); + } + + public List<? extends NpcData> getNpcDatas() { + return framedGraph.traverse((g) -> framedGraph.getTypeResolver().hasType(g.V(), NpcData.class)).toList(NpcData.class); + } + + public NpcData newNpcData() { + return framedGraph.addFramedVertex(NpcData.class); + } + @Override protected void startUp() { } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbNpcStorage.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbNpcStorage.java deleted file mode 100644 index b054d9b0..00000000 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbNpcStorage.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2017 Syncleus, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.syncleus.aethermud.storage.graphdb; - -import com.syncleus.aethermud.Main; -import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.npc.NpcSpawn; -import com.syncleus.aethermud.npc.NpcBuilder; -import com.syncleus.aethermud.storage.NpcStorage; -import com.syncleus.ferma.WrappedFramedGraph; -import org.apache.log4j.Logger; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.io.IoCore; - -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - -public class GraphDbNpcStorage implements NpcStorage { - private final GameManager gameManager; - private static final Logger log = Logger.getLogger(GraphDbNpcStorage.class); - private final WrappedFramedGraph<Graph> framedGraph; - - public GraphDbNpcStorage(GameManager gameManager, WrappedFramedGraph<Graph> framedGraph) { - this.gameManager = gameManager; - this.framedGraph = framedGraph; - } - - public List<? extends NpcSpawn> getAllNpcs() { - List<? extends NpcData> npcData = this.getNpcDatas(); - return npcData.stream() - .map(metadata -> new NpcBuilder(metadata).setGameManager(gameManager).createNpc()) - .collect(Collectors.toList()); - } - - public List<? extends NpcData> getNpcDatas() { - return framedGraph.traverse((g) -> framedGraph.getTypeResolver().hasType(g.V(), NpcData.class)).toList(NpcData.class); - } - - public NpcData newNpcData() { - return framedGraph.addFramedVertex(NpcData.class); - } - - public void persist() { - try { - this.framedGraph.getBaseGraph().io(IoCore.graphson()).writeGraph(Main.DEFAULT_GRAPH_DB_FILE); - } catch (IOException e) { - throw new IllegalStateException("Could not write to graph file.", e); - } - } -} - diff --git a/src/test/java/com/syncleus/aethermud/common/ColorizedTextTemplateTest.java b/src/test/java/com/syncleus/aethermud/common/ColorizedTextTemplateTest.java index b01b2e58..2b74a2ee 100644 --- a/src/test/java/com/syncleus/aethermud/common/ColorizedTextTemplateTest.java +++ b/src/test/java/com/syncleus/aethermud/common/ColorizedTextTemplateTest.java @@ -18,9 +18,9 @@ package com.syncleus.aethermud.common; import com.google.common.collect.Lists; import com.syncleus.aethermud.Main; import com.syncleus.aethermud.items.Loot; -import com.syncleus.aethermud.storage.graphdb.GraphDbNpcStorage; +import com.syncleus.aethermud.storage.AetherMudStorage; +import com.syncleus.aethermud.storage.graphdb.GraphDbAetherMudStorage; import com.syncleus.aethermud.storage.graphdb.NpcData; -import com.syncleus.aethermud.storage.NpcStorage; import com.google.common.collect.Maps; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -66,7 +66,7 @@ public class ColorizedTextTemplateTest { Gson gson = new GsonBuilder().setPrettyPrinting().create(); WrappedFramedGraph<Graph> framedGraph = new DelegatingFramedGraph(TinkerGraph.open(), Main.FRAMED_TYPES); - NpcStorage npcStorage = new GraphDbNpcStorage(null, framedGraph); + AetherMudStorage npcStorage = new GraphDbAetherMudStorage(framedGraph, null); List<? extends NpcData> npcData = npcStorage.getNpcDatas(); Assert.assertTrue(npcData.isEmpty()); diff --git a/src/test/java/com/syncleus/aethermud/player/PlayerManagerTest.java b/src/test/java/com/syncleus/aethermud/player/PlayerManagerTest.java index e4e0fcfd..b1cfb5df 100644 --- a/src/test/java/com/syncleus/aethermud/player/PlayerManagerTest.java +++ b/src/test/java/com/syncleus/aethermud/player/PlayerManagerTest.java @@ -49,7 +49,7 @@ public class PlayerManagerTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); WrappedFramedGraph<Graph> framedGraph = new DelegatingFramedGraph(TinkerGraph.open(), Main.FRAMED_TYPES); - GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph); + GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph, "aethermud-test-graph.json"); playerManager = new PlayerManager(graphStorage, sessionManager); } diff --git a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java index ccfdb265..b27f65a8 100644 --- a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java +++ b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java @@ -68,7 +68,7 @@ public class NpcTestHarness { // Levels 1-3 @Test public void testDemonCat() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("demon cat")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 1, Sets.newHashSet(), 98f, 90f, 10, 5, 3, 0); processRunAndVerify(npcSpawnFromFile, 2, Sets.newHashSet(), 99.9f, 96f, 7, 4, 3, 0); @@ -78,7 +78,7 @@ public class NpcTestHarness { // Levels 2-4 @Test public void testSwampBerserker() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("swamp berserker")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 1, Sets.newHashSet(), 15f, 0f, 10, 0, 10, 5); processRunAndVerify(npcSpawnFromFile, 2, Sets.newHashSet(), 25f, 0f, 10, 0, 10, 5); @@ -89,7 +89,7 @@ public class NpcTestHarness { // Levels 2-4 @Test public void testBloodWolf() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("blood wolf")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 1, Sets.newHashSet(), 15f, 0f, 10, 0, 14, 5); processRunAndVerify(npcSpawnFromFile, 2, Sets.newHashSet(), 25f, 0f, 10, 0, 14, 5); @@ -100,7 +100,7 @@ public class NpcTestHarness { // Levels 4-6 @Test public void testTreeBerserker() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("tree berserker")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 3, Sets.newHashSet(), 20f, 12f, 10, 0, 14, 8); processRunAndVerify(npcSpawnFromFile, 4, Sets.newHashSet(), 40f, 33f, 10, 0, 14, 8); @@ -111,7 +111,7 @@ public class NpcTestHarness { // Levels 6-8 @Test public void testSwampBear() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("swamp bear")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 6, getEarlyLevelArmorSet(), 55, 40f, 10, 0, 18, 12); processRunAndVerify(npcSpawnFromFile, 7, getEarlyLevelArmorSet(), 85, 70f, 10, 0, 18, 12); @@ -122,7 +122,7 @@ public class NpcTestHarness { // Levels 8-10 @Test public void testRedEyeBear() throws Exception { - List<? extends NpcSpawn> npcsFromFile = gameManager.getNpcStorage().getAllNpcs(); + List<? extends NpcSpawn> npcsFromFile = gameManager.getGraphStorage().getAllNpcs(gameManager); NpcSpawn npcSpawnFromFile = npcsFromFile.stream().filter(npc -> npc.getName().equals("red-eyed bear")).collect(Collectors.toList()).get(0); processRunAndVerify(npcSpawnFromFile, 8, getMidLevelArmorSet(), 55, 36f, 10, 0, 24, 18); processRunAndVerify(npcSpawnFromFile, 9, getMidLevelArmorSet(), 85, 70f, 10, 0, 24, 18); @@ -330,7 +330,7 @@ public class NpcTestHarness { }; AetherMudConfiguration aetherMudConfiguration = new AetherMudConfiguration(new MapConfiguration(Maps.newHashMap())); WrappedFramedGraph<Graph> framedGraph = new DelegatingFramedGraph(TinkerGraph.open(), Main.FRAMED_TYPES); - GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph); + GraphDbAetherMudStorage graphStorage = new GraphDbAetherMudStorage(framedGraph, "aethermud-tests-graph.json"); PlayerManager playerManager = new PlayerManager(graphStorage, new SessionManager()); RoomManager roomManager = new RoomManager(playerManager); MapsManager mapsManager = new MapsManager(aetherMudConfiguration, roomManager); -- GitLab