diff options
author | snowleo <schneeleo@gmail.com> | 2013-04-23 00:47:45 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2013-04-23 00:47:45 +0200 |
commit | a74189777a5f6ea72b2f46a51ce415efcc3deba4 (patch) | |
tree | 679d2b9422dee6c4025467037119ab8a580238fa /Essentials/src/com/earth2me/essentials/EssentialsConf.java | |
parent | 4851ac68307b07836fffb21039a356e14ba086e6 (diff) | |
download | Essentials-a74189777a5f6ea72b2f46a51ce415efcc3deba4.tar Essentials-a74189777a5f6ea72b2f46a51ce415efcc3deba4.tar.gz Essentials-a74189777a5f6ea72b2f46a51ce415efcc3deba4.tar.lz Essentials-a74189777a5f6ea72b2f46a51ce415efcc3deba4.tar.xz Essentials-a74189777a5f6ea72b2f46a51ce415efcc3deba4.zip |
Allow to forceSave conf files
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/EssentialsConf.java')
-rw-r--r-- | Essentials/src/com/earth2me/essentials/EssentialsConf.java | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java index 8f0c69dd6..26f9d1c9d 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java @@ -9,8 +9,10 @@ import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CoderResult; import java.util.*; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import java.util.logging.Logger; @@ -250,6 +252,31 @@ public class EssentialsConf extends YamlConfiguration @Override public synchronized void save(final File file) throws IOException { + delayedSave(file); + } + + public synchronized void forceSave() + { + try + { + Future<?> future = delayedSave(configFile); + if (future != null) + { + future.get(); + } + } + catch (InterruptedException ex) + { + LOGGER.log(Level.SEVERE, ex.getMessage(), ex); + } + catch (ExecutionException ex) + { + LOGGER.log(Level.SEVERE, ex.getMessage(), ex); + } + } + + private Future<?> delayedSave(final File file) + { //long startTime = System.nanoTime(); if (file == null) { @@ -260,14 +287,16 @@ public class EssentialsConf extends YamlConfiguration if (data.length() == 0) { - return; + return null; } pendingDiskWrites.incrementAndGet(); - EXECUTOR_SERVICE.submit(new WriteRunner(configFile, data, pendingDiskWrites)); + Future<?> future = EXECUTOR_SERVICE.submit(new WriteRunner(configFile, data, pendingDiskWrites)); //LOGGER.log(Level.INFO, configFile + " prepared for writing in " + (System.nanoTime() - startTime) + " nsec."); + + return future; } |