Fix Sponge defaults serialization

This commit is contained in:
Luck 2016-11-23 21:44:59 +00:00
parent f0ad32bc37
commit 61eb86b3a0
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B

View File

@ -22,6 +22,7 @@
package me.lucko.luckperms.sponge.service.persisted; package me.lucko.luckperms.sponge.service.persisted;
import com.google.common.base.Splitter;
import lombok.ToString; import lombok.ToString;
import me.lucko.luckperms.api.context.ContextSet; import me.lucko.luckperms.api.context.ContextSet;
import org.spongepowered.api.service.context.Context; import org.spongepowered.api.service.context.Context;
@ -41,7 +42,7 @@ import static me.lucko.luckperms.sponge.service.LuckPermsService.convertContexts
public class SubjectDataHolder { public class SubjectDataHolder {
private final Map<Map<String, String>, Map<String, Boolean>> permissions; private final Map<Map<String, String>, Map<String, Boolean>> permissions;
private final Map<Map<String, String>, Map<String, String>> options; private final Map<Map<String, String>, Map<String, String>> options;
private final Map<Map<String, String>, List<Map.Entry<String, String>>> parents; private final Map<Map<String, String>, List<String>> parents;
public SubjectDataHolder(Map<Set<Context>, Map<String, String>> options, Map<Set<Context>, Map<String, Boolean>> permissions, Map<Set<Context>, List<Map.Entry<String, String>>> parents) { public SubjectDataHolder(Map<Set<Context>, Map<String, String>> options, Map<Set<Context>, Map<String, Boolean>> permissions, Map<Set<Context>, List<Map.Entry<String, String>>> parents) {
this.options = new HashMap<>(); this.options = new HashMap<>();
@ -56,7 +57,7 @@ public class SubjectDataHolder {
this.parents = new HashMap<>(); this.parents = new HashMap<>();
for (Map.Entry<Set<Context>, List<Map.Entry<String, String>>> e : parents.entrySet()) { for (Map.Entry<Set<Context>, List<Map.Entry<String, String>>> e : parents.entrySet()) {
this.parents.put(convertContexts(e.getKey()).toMap(), e.getValue().stream().map(p -> new AbstractMap.SimpleEntry<>(p.getKey(), p.getValue())).collect(Collectors.toList())); this.parents.put(convertContexts(e.getKey()).toMap(), e.getValue().stream().map(p -> p.getKey() + "/" + p.getValue()).collect(Collectors.toList()));
} }
} }
@ -93,10 +94,11 @@ public class SubjectDataHolder {
} }
} }
for (Map.Entry<Map<String, String>, List<Map.Entry<String, String>>> e : parents.entrySet()) { for (Map.Entry<Map<String, String>, List<String>> e : parents.entrySet()) {
Set<Context> contexts = convertContexts(ContextSet.fromMap(e.getKey())); Set<Context> contexts = convertContexts(ContextSet.fromMap(e.getKey()));
for (Map.Entry<String, String> parent : e.getValue()) { for (String parent : e.getValue()) {
subjectData.addParent(contexts, service.getSubjects(parent.getKey()).get(parent.getValue())); List<String> parts = Splitter.on('/').limit(2).splitToList(parent);
subjectData.addParent(contexts, service.getSubjects(parts.get(0)).get(parts.get(1)));
} }
} }
} }