From bde7ea802b44457e8d9c7c56a41fb51ffd9ce8a9 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Sun, 12 Jul 2015 16:57:03 -0500 Subject: [PATCH] Added check to ODBs to make sure they are loaded before saving them --- src/resources/server_info/CachedObjectDatabase.java | 7 +++++++ src/resources/server_info/UncachedObjectDatabase.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/resources/server_info/CachedObjectDatabase.java b/src/resources/server_info/CachedObjectDatabase.java index c70ef7bc8..d6286c0c2 100644 --- a/src/resources/server_info/CachedObjectDatabase.java +++ b/src/resources/server_info/CachedObjectDatabase.java @@ -41,10 +41,12 @@ import java.util.Map.Entry; public class CachedObjectDatabase extends ObjectDatabase { private final Map objects; + private boolean loaded; public CachedObjectDatabase(String filename) { super(filename); objects = new HashMap(); + loaded = false; } public synchronized V put(String key, V value) { @@ -94,6 +96,10 @@ public class CachedObjectDatabase extends ObjectDatabase } public synchronized boolean save() { + if (!loaded) { + System.err.println("Not saving '" + getFile() + "', file not loaded yet!"); + return false; + } ObjectOutputStream oos = null; try { oos = new ObjectOutputStream(new FileOutputStream(getFile())); @@ -141,6 +147,7 @@ public class CachedObjectDatabase extends ObjectDatabase objects.put(key, val); } } + loaded = true; } catch (EOFException e) { } catch (IOException | ClassNotFoundException | ClassCastException e) { diff --git a/src/resources/server_info/UncachedObjectDatabase.java b/src/resources/server_info/UncachedObjectDatabase.java index 3e9ae8b77..83695a900 100644 --- a/src/resources/server_info/UncachedObjectDatabase.java +++ b/src/resources/server_info/UncachedObjectDatabase.java @@ -45,13 +45,15 @@ import java.util.Map.Entry; public class UncachedObjectDatabase extends ObjectDatabase { - private Map objectIndex; - private Map objects; + private final Map objectIndex; + private final Map objects; + private boolean loaded; public UncachedObjectDatabase(String filename) { super(filename); objectIndex = new HashMap(); objects = new HashMap(); + loaded = false; loadPointers(); } @@ -106,6 +108,10 @@ public class UncachedObjectDatabase extends ObjectDataba } public synchronized boolean save() { + if (!loaded) { + System.err.println("Not saving '" + getFile() + "', file not loaded yet!"); + return false; + } DataOutputStream dos = null; try { File file = getFile(); @@ -322,6 +328,7 @@ public class UncachedObjectDatabase extends ObjectDataba index = loadObject(dis, index); } dis.close(); + loaded = true; } catch (IOException e) { return false; } finally {