From a7cfee656a740917721c8ef869081693142a007d Mon Sep 17 00:00:00 2001 From: nathan Date: Tue, 30 Sep 2014 17:53:20 +0200 Subject: [PATCH] Fixed storage close operations --- .../src/dorkbox/util/storage/Storage.java | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) 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(); }