summaryrefslogtreecommitdiffstats
path: root/Essentials/src/com/earth2me/essentials/EssentialsConf.java
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2013-04-23 00:47:45 +0200
committersnowleo <schneeleo@gmail.com>2013-04-23 00:47:45 +0200
commita74189777a5f6ea72b2f46a51ce415efcc3deba4 (patch)
tree679d2b9422dee6c4025467037119ab8a580238fa /Essentials/src/com/earth2me/essentials/EssentialsConf.java
parent4851ac68307b07836fffb21039a356e14ba086e6 (diff)
downloadEssentials-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.java33
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;
}