Improve permission lookup speed (slightly)

This commit is contained in:
Luck
2016-10-26 21:35:44 +01:00
Unverified
parent 1c15f8462f
commit 0198068a13
14 changed files with 94 additions and 64 deletions
@@ -22,6 +22,7 @@
package me.lucko.luckperms.sponge;
import com.google.common.collect.ImmutableList;
import lombok.AllArgsConstructor;
import me.lucko.luckperms.api.Contexts;
import me.lucko.luckperms.common.calculators.*;
@@ -30,27 +31,23 @@ import me.lucko.luckperms.sponge.calculators.DefaultsProcessor;
import me.lucko.luckperms.sponge.calculators.SpongeWildcardProcessor;
import me.lucko.luckperms.sponge.service.LuckPermsService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@AllArgsConstructor
public class SpongeCalculatorFactory implements CalculatorFactory {
private final LPSpongePlugin plugin;
@Override
public PermissionCalculator build(Contexts contexts, User user, Map<String, Boolean> map) {
List<PermissionProcessor> processors = new ArrayList<>(5);
processors.add(new MapProcessor(map));
public PermissionCalculator build(Contexts contexts, User user) {
ImmutableList.Builder<PermissionProcessor> processors = ImmutableList.builder();
processors.add(new MapProcessor());
if (plugin.getConfiguration().isApplyingWildcards()) {
processors.add(new SpongeWildcardProcessor(map));
processors.add(new WildcardProcessor(map));
processors.add(new SpongeWildcardProcessor());
processors.add(new WildcardProcessor());
}
if (plugin.getConfiguration().isApplyingRegex()) {
processors.add(new RegexProcessor(map));
processors.add(new RegexProcessor());
}
processors.add(new DefaultsProcessor(plugin.getService(), LuckPermsService.convertContexts(contexts.getContexts())));
return new PermissionCalculator(plugin, user.getName(), plugin.getConfiguration().isDebugPermissionChecks(), processors);
return new PermissionCalculator(plugin, user.getName(), plugin.getConfiguration().isDebugPermissionChecks(), processors.build());
}
}
@@ -28,6 +28,7 @@ import me.lucko.luckperms.sponge.service.LuckPermsService;
import org.spongepowered.api.service.context.Context;
import org.spongepowered.api.util.Tristate;
import java.util.Map;
import java.util.Set;
import static me.lucko.luckperms.sponge.service.LuckPermsService.convertTristate;
@@ -51,4 +52,9 @@ public class DefaultsProcessor implements PermissionProcessor {
return me.lucko.luckperms.api.Tristate.UNDEFINED;
}
@Override
public void updateBacking(Map<String, Boolean> map) {
// Do nothing, this doesn't use the backing
}
}
@@ -22,18 +22,13 @@
package me.lucko.luckperms.sponge.calculators;
import lombok.AllArgsConstructor;
import lombok.Getter;
import me.lucko.luckperms.api.Tristate;
import me.lucko.luckperms.common.calculators.PermissionProcessor;
import java.util.Map;
@AllArgsConstructor
public class SpongeWildcardProcessor implements PermissionProcessor {
@Getter
private final Map<String, Boolean> map;
private Map<String, Boolean> map = null;
@Override
public Tristate hasPermission(String permission) {
@@ -56,4 +51,11 @@ public class SpongeWildcardProcessor implements PermissionProcessor {
return Tristate.UNDEFINED;
}
@Override
public void updateBacking(Map<String, Boolean> map) {
if (this.map == null) {
this.map = map;
}
}
}