diff --git a/Dorkbox-Util/src/dorkbox/util/storage/Storage.java b/Dorkbox-Util/src/dorkbox/util/storage/Storage.java index de7be61..bac6bf9 100644 --- a/Dorkbox-Util/src/dorkbox/util/storage/Storage.java +++ b/Dorkbox-Util/src/dorkbox/util/storage/Storage.java @@ -104,6 +104,33 @@ public class Storage { } } + public static void shutdown() { + synchronized(storages) { + Collection values = storages.values(); + for (Storage storage : values) { + while (!storage.decrementReference()) { + } + storage.close(); + } + storages.clear(); + } + } + + public static void delete(File file) { + synchronized(storages) { + Storage remove = storages.remove(file); + if (remove != null) { + remove.close(); + } + file.delete(); + } + } + + public static void delete(Storage storage) { + File file = storage.getFile(); + delete(file); + } + private static void copyFields(Object source, Object dest) { Class sourceClass = source.getClass(); @@ -215,33 +242,6 @@ public class Storage { return true; } - public static void shutdown() { - synchronized(storages) { - Collection values = storages.values(); - for (Storage storage : values) { - while (!storage.decrementReference()) { - } - storage.close(); - } - storages.clear(); - } - } - - public static void delete(File file) { - synchronized(storages) { - Storage remove = storages.remove(file); - if (remove != null) { - remove.close(); - } - file.delete(); - } - } - - public static void delete(Storage storage) { - File file = storage.getFile(); - delete(file); - } - @@ -503,11 +503,12 @@ public class Storage { * Closes the database and file. */ private final void close() { - this.isOpen.set(false); - // timer action runs on THIS thread, not timer thread this.timer.delay(0L); + // have to "close" it after we run the timer! + this.isOpen.set(false); + this.storage.close(); }