From 0964762217a35c2303cbb8c4dbcc9ab1191f916c Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 26 Mar 2020 23:09:09 +0000 Subject: [PATCH] Avoid call to PermissionUser.initialize in PEX migration (#2102) --- .../migration/MigrationPermissionsEx.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationPermissionsEx.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationPermissionsEx.java index 9bbf6d7b9..dc8309b3a 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationPermissionsEx.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationPermissionsEx.java @@ -52,6 +52,8 @@ import me.lucko.luckperms.common.util.ProgressLogger; import net.luckperms.api.context.DefaultContextKeys; import net.luckperms.api.event.cause.CreationCause; import net.luckperms.api.model.data.DataType; +import net.luckperms.api.node.Node; +import net.luckperms.api.node.types.InheritanceNode; import org.bukkit.Bukkit; @@ -79,7 +81,6 @@ import java.util.stream.Collectors; public class MigrationPermissionsEx extends ChildCommand { private static final Method GET_DATA_METHOD; - private static final Method GET_USER_METHOD; private static final Field TIMED_PERMISSIONS_FIELD; private static final Field TIMED_PERMISSIONS_TIME_FIELD; private static final Field NATIVE_INTERFACE_FIELD; @@ -88,9 +89,6 @@ public class MigrationPermissionsEx extends ChildCommand { GET_DATA_METHOD = PermissionEntity.class.getDeclaredMethod("getData"); GET_DATA_METHOD.setAccessible(true); - GET_USER_METHOD = PermissionManager.class.getDeclaredMethod("getUser", String.class, String.class, boolean.class); - GET_USER_METHOD.setAccessible(true); - TIMED_PERMISSIONS_FIELD = PermissionEntity.class.getDeclaredField("timedPermissions"); TIMED_PERMISSIONS_FIELD.setAccessible(true); @@ -188,7 +186,7 @@ public class MigrationPermissionsEx extends ChildCommand { Collection userIdentifiers = manager.getBackend().getUserIdentifiers(); Iterators.tryIterate(userIdentifiers, id -> { - PermissionUser user = (PermissionUser) GET_USER_METHOD.invoke(manager, id, null, false); + PermissionUser user = new PermissionUser(id, manager.getBackend().getUserData(id), manager); if (isUserEmpty(user)) { return; } @@ -282,7 +280,10 @@ public class MigrationPermissionsEx extends ChildCommand { for (String node : worldData.getValue()) { if (node.isEmpty()) continue; long expiry = timedPermissionsTime.getOrDefault(Strings.nullToEmpty(world) + ":" + node, 0L); - holder.setNode(DataType.NORMAL, MigrationUtils.parseNode(node, true).withContext(DefaultContextKeys.WORLD_KEY, world).expiry(expiry).build(), true); + Node n = MigrationUtils.parseNode(node, true).withContext(DefaultContextKeys.WORLD_KEY, world).expiry(expiry).build(); + if (!n.hasExpired()) { + holder.setNode(DataType.NORMAL, n, true); + } } } @@ -310,10 +311,15 @@ public class MigrationPermissionsEx extends ChildCommand { } } - holder.setNode(DataType.NORMAL, Inheritance.builder(MigrationUtils.standardizeName(parentName)).withContext(DefaultContextKeys.WORLD_KEY, world).expiry(expiry).build(), true); + InheritanceNode n = Inheritance.builder(MigrationUtils.standardizeName(parentName)).withContext(DefaultContextKeys.WORLD_KEY, world).expiry(expiry).build(); + if (n.hasExpired()) { + continue; + } + + holder.setNode(DataType.NORMAL, n, true); // migrate primary groups - if (world == null && holder instanceof User && expiry == 0) { + if (world.equals("global") && holder instanceof User && expiry == 0) { if (parent.getRank() < primaryWeight) { primary = parent.getName(); primaryWeight = parent.getRank();