summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java b/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java
index 690e6fed..ababef3e 100644
--- a/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java
+++ b/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java
@@ -24,18 +24,15 @@ public class YamlStorageProvider implements StorageProvider {
this.plugin = plugin;
}
- private void lock(UUID uuid) {
+ private ReentrantLock lock(UUID uuid) {
locks.putIfAbsent(uuid, new ReentrantLock());
- locks.get(uuid).lock();
- }
-
- private void unlock(UUID uuid) {
ReentrantLock lock = locks.get(uuid);
- if (lock != null) lock.unlock();
+ lock.lock();
+ return lock;
}
public QuestProgressFile loadProgressFile(UUID uuid) {
- lock(uuid);
+ ReentrantLock lock = lock(uuid);
QuestProgressFile questProgressFile = new QuestProgressFile(uuid, plugin);
try {
File directory = new File(plugin.getDataFolder() + File.separator + "playerdata");
@@ -75,14 +72,14 @@ public class YamlStorageProvider implements StorageProvider {
ex.printStackTrace();
// fuck
} finally {
- unlock(uuid);
+ lock.unlock();
}
return questProgressFile;
}
public void saveProgressFile(UUID uuid, QuestProgressFile questProgressFile) {
- lock(uuid);
+ ReentrantLock lock = lock(uuid);
try {
List<QuestProgress> questProgressValues = new ArrayList<>(questProgressFile.getAllQuestProgress());
File directory = new File(plugin.getDataFolder() + File.separator + "playerdata");
@@ -123,7 +120,7 @@ public class YamlStorageProvider implements StorageProvider {
e.printStackTrace();
}
} finally {
- unlock(uuid);
+ lock.unlock();
}
}
}