From 4a594a8e4f835b67688aee26603e5f4169c00286 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Sat, 25 Sep 2021 13:58:18 -0400 Subject: [PATCH] Fix --- .../iris/core/loader/ResourceLoader.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java b/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java index 93592b482..5f646553a 100644 --- a/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java +++ b/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java @@ -40,6 +40,8 @@ import lombok.Data; import java.io.File; import java.util.Locale; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.function.Predicate; import java.util.stream.Stream; @@ -51,7 +53,7 @@ public class ResourceLoader implements MeteredCache { protected String folderName; protected String resourceTypeName; protected KCache loadCache; - protected KList folderCache; + protected final AtomicReference> folderCache; protected Class objectClass; protected String cname; protected String[] possibleKeys = null; @@ -61,6 +63,7 @@ public class ResourceLoader implements MeteredCache { public ResourceLoader(File root, IrisData manager, String folderName, String resourceTypeName, Class objectClass) { this.manager = manager; + folderCache = new AtomicReference<>(); sec = new ChronoLatch(5000); loads = new AtomicInteger(); this.objectClass = objectClass; @@ -268,26 +271,20 @@ public class ResourceLoader implements MeteredCache { } public KList getFolders() { - if (folderCache == null) { - folderCache = new KList<>(); + if (folderCache.get() == null) { + folderCache.set(new KList<>()); for (File i : root.listFiles()) { if (i.isDirectory()) { if (i.getName().equals(folderName)) { - folderCache.add(i); + folderCache.get().add(i); break; } } } } - if (folderCache == null) { - synchronized (this) { - return getFolderCache(); - } - } - - return folderCache; + return folderCache.get(); } public KList getFolders(String rc) { @@ -307,7 +304,7 @@ public class ResourceLoader implements MeteredCache { public void clearCache() { possibleKeys = null; loadCache.invalidate(); - folderCache = null; + folderCache.set(null); } public File fileFor(T b) { @@ -333,7 +330,7 @@ public class ResourceLoader implements MeteredCache { } public void clearList() { - folderCache = null; + folderCache.set(null); possibleKeys = null; }