From a047695a84574d1b7287d4d1cd76f156b28e787c Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 17 Nov 2016 19:01:58 +0000 Subject: [PATCH] Fix issue with nodes never being removed on sync with flatfile storage types --- .../luckperms/common/core/PermissionHolder.java | 10 ---------- .../common/storage/backing/JSONBacking.java | 13 +++++++++---- .../common/storage/backing/YAMLBacking.java | 13 +++---------- .../lucko/luckperms/common/users/UserManager.java | 2 -- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java index 3422be3d1..db4cdd7d7 100644 --- a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java @@ -469,7 +469,6 @@ public abstract class PermissionHolder { invalidateCache(false); } - @Deprecated public void setNodes(Map nodes) { Set set = nodes.entrySet().stream() .map(e -> makeNode(e.getKey(), e.getValue())) @@ -478,15 +477,6 @@ public abstract class PermissionHolder { setNodes(set); } - public void addNodeUnchecked(Node node) { - synchronized (nodes) { - if (!nodes.add(node)) { - return; - } - } - invalidateCache(true); - } - /** * Check if the holder has a permission node * @param node the node to check diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/backing/JSONBacking.java b/common/src/main/java/me/lucko/luckperms/common/storage/backing/JSONBacking.java index 889aed651..73cc38351 100644 --- a/common/src/main/java/me/lucko/luckperms/common/storage/backing/JSONBacking.java +++ b/common/src/main/java/me/lucko/luckperms/common/storage/backing/JSONBacking.java @@ -26,7 +26,6 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import lombok.Cleanup; import me.lucko.luckperms.common.LuckPermsPlugin; -import me.lucko.luckperms.common.core.NodeFactory; import me.lucko.luckperms.common.groups.Group; import me.lucko.luckperms.common.groups.GroupManager; import me.lucko.luckperms.common.tracks.Track; @@ -93,11 +92,13 @@ public class JSONBacking extends FlatfileBacking { user.setPrimaryGroup(reader.nextString()); // primaryGroup reader.nextName(); // perms reader.beginObject(); + Map map = new HashMap<>(); while (reader.hasNext()) { String node = reader.nextName(); boolean b = reader.nextBoolean(); - user.addNodeUnchecked(NodeFactory.fromSerialisedNode(node, b)); + map.put(node, b); } + user.setNodes(map); reader.endObject(); reader.endObject(); @@ -255,11 +256,13 @@ public class JSONBacking extends FlatfileBacking { reader.nextString(); // name reader.nextName(); //perms reader.beginObject(); + Map map = new HashMap<>(); while (reader.hasNext()) { String node = reader.nextName(); boolean b = reader.nextBoolean(); - group.addNodeUnchecked(NodeFactory.fromSerialisedNode(node, b)); + map.put(node, b); } + group.setNodes(map); reader.endObject(); reader.endObject(); @@ -305,11 +308,13 @@ public class JSONBacking extends FlatfileBacking { reader.nextString(); // name reader.nextName(); // perms reader.beginObject(); + Map map = new HashMap<>(); while (reader.hasNext()) { String node = reader.nextName(); boolean b = reader.nextBoolean(); - group.addNodeUnchecked(NodeFactory.fromSerialisedNode(node, b)); + map.put(node, b); } + group.setNodes(map); reader.endObject(); reader.endObject(); return true; diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/backing/YAMLBacking.java b/common/src/main/java/me/lucko/luckperms/common/storage/backing/YAMLBacking.java index d874dc465..01696b55b 100644 --- a/common/src/main/java/me/lucko/luckperms/common/storage/backing/YAMLBacking.java +++ b/common/src/main/java/me/lucko/luckperms/common/storage/backing/YAMLBacking.java @@ -24,7 +24,6 @@ package me.lucko.luckperms.common.storage.backing; import lombok.Cleanup; import me.lucko.luckperms.common.LuckPermsPlugin; -import me.lucko.luckperms.common.core.NodeFactory; import me.lucko.luckperms.common.groups.Group; import me.lucko.luckperms.common.groups.GroupManager; import me.lucko.luckperms.common.tracks.Track; @@ -91,9 +90,7 @@ public class YAMLBacking extends FlatfileBacking { String name = (String) values.get("name"); user.setPrimaryGroup((String) values.get("primary-group")); Map perms = (Map) values.get("perms"); - for (Map.Entry e : perms.entrySet()) { - user.addNodeUnchecked(NodeFactory.fromSerialisedNode(e.getKey(), e.getValue())); - } + user.setNodes(perms); boolean save = plugin.getUserManager().giveDefaultIfNeeded(user, false); @@ -214,9 +211,7 @@ public class YAMLBacking extends FlatfileBacking { if (groupFile.exists()) { return doRead(groupFile, values -> { Map perms = (Map) values.get("perms"); - for (Map.Entry e : perms.entrySet()) { - group.addNodeUnchecked(NodeFactory.fromSerialisedNode(e.getKey(), e.getValue())); - } + group.setNodes(perms); return true; }); } else { @@ -247,9 +242,7 @@ public class YAMLBacking extends FlatfileBacking { File groupFile = new File(groupsDir, name + ".yml"); return groupFile.exists() && doRead(groupFile, values -> { Map perms = (Map) values.get("perms"); - for (Map.Entry e : perms.entrySet()) { - group.addNodeUnchecked(NodeFactory.fromSerialisedNode(e.getKey(), e.getValue())); - } + group.setNodes(perms); return true; }); diff --git a/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java b/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java index d64f3c260..65d0ac193 100644 --- a/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/users/UserManager.java @@ -134,8 +134,6 @@ public class UserManager extends AbstractManager { for (UUID uuid : players) { UUID internal = plugin.getUuidCache().getUUID(uuid); plugin.getStorage().loadUser(internal, "null").join(); - User user = get(internal); - user.getRefreshBuffer().request(); } }); });