Fixed storage close operations

This commit is contained in:
nathan 2014-09-30 17:53:20 +02:00
parent 6bc474615f
commit a7cfee656a
1 changed files with 30 additions and 29 deletions

View File

@ -104,6 +104,33 @@ public class Storage {
}
}
public static void shutdown() {
synchronized(storages) {
Collection<Storage> 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<? extends Object> sourceClass = source.getClass();
@ -215,33 +242,6 @@ public class Storage {
return true;
}
public static void shutdown() {
synchronized(storages) {
Collection<Storage> 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();
}