2626package me .lucko .luckperms .bukkit .calculator ;
2727
2828import me .lucko .luckperms .bukkit .LPBukkitPlugin ;
29+ import me .lucko .luckperms .bukkit .inject .server .LuckPermsPermissionMap ;
2930import me .lucko .luckperms .common .cacheddata .result .TristateResult ;
30- import me .lucko .luckperms .common .calculator .processor .AbstractSourceBasedProcessor ;
31+ import me .lucko .luckperms .common .calculator .processor .AbstractPermissionProcessor ;
3132import me .lucko .luckperms .common .calculator .processor .PermissionProcessor ;
33+ import net .luckperms .api .node .Node ;
3234import net .luckperms .api .util .Tristate ;
3335
34- import java .util .Collections ;
3536import java .util .HashMap ;
3637import java .util .Map ;
3738import java .util .concurrent .atomic .AtomicBoolean ;
3839
3940/**
4041 * Permission Processor for Bukkits "child" permission system.
4142 */
42- public class ChildProcessor extends AbstractSourceBasedProcessor implements PermissionProcessor {
43+ public class ChildProcessor extends AbstractPermissionProcessor implements PermissionProcessor {
4344 private static final TristateResult .Factory RESULT_FACTORY = new TristateResult .Factory (ChildProcessor .class );
4445
4546 private final LPBukkitPlugin plugin ;
47+ private final Map <String , Node > sourceMap ;
48+
4649 private final AtomicBoolean needsRefresh = new AtomicBoolean (false );
47- private Map <String , TristateResult > childPermissions = Collections . emptyMap () ;
50+ private Map <String , TristateResult > childPermissions ;
4851
49- public ChildProcessor (LPBukkitPlugin plugin ) {
52+ public ChildProcessor (LPBukkitPlugin plugin , Map < String , Node > sourceMap ) {
5053 this .plugin = plugin ;
54+ this .sourceMap = sourceMap ;
55+ refresh ();
56+ }
57+
58+ private void refresh () {
59+ this .childPermissions = processChildPermissions (this .sourceMap , this .plugin .getPermissionMap ());
5160 }
5261
5362 @ Override
@@ -59,20 +68,18 @@ public TristateResult hasPermission(String permission) {
5968 }
6069
6170 @ Override
62- public void refresh () {
71+ public void invalidate () {
72+ this .needsRefresh .set (true );
73+ }
74+
75+ private static Map <String , TristateResult > processChildPermissions (Map <String , Node > sourceMap , LuckPermsPermissionMap permissionMap ) {
6376 Map <String , TristateResult > childPermissions = new HashMap <>();
64- this . sourceMap .forEach ((key , node ) -> {
65- Map <String , Boolean > children = this . plugin . getPermissionMap () .getChildPermissions (key , node .getValue ());
77+ sourceMap .forEach ((key , node ) -> {
78+ Map <String , Boolean > children = permissionMap .getChildPermissions (key , node .getValue ());
6679 children .forEach ((childKey , childValue ) -> {
6780 childPermissions .put (childKey , RESULT_FACTORY .resultWithOverride (node , Tristate .of (childValue )));
6881 });
6982 });
70- this .childPermissions = childPermissions ;
71- this .needsRefresh .set (false );
72- }
73-
74- @ Override
75- public void invalidate () {
76- this .needsRefresh .set (true );
83+ return childPermissions ;
7784 }
7885}
0 commit comments