/** * Return all parents that this group has in its current context * combination. * * <p>This must include inherited values if the permissions * service supports inheritance.</p> * * <p>It must also must return the same value as {@link #getParents(Set)} * using {@link #getActiveContexts()}.</p> * * @return An immutable list of parents */ default List<SubjectReference> getParents() { return getParents(getActiveContexts()); }
/** * Return all parents that this group has in its current context * combination. This must include inherited values if the permissions * service supports inheritance. This must return the same value as * {@link #getParents(Set)} using {@link #getActiveContexts()}. * * @return An immutable list of parents */ default List<Subject> getParents() { return getParents(getActiveContexts()); }
public static String getHighestGroup(Player player) { try { if (!Sponge.getGame().getServiceManager().getRegistration(PermissionService.class).isPresent()) return ""; PermissionService ps = Sponge.getGame().getServiceManager().getRegistration(PermissionService.class).get().getProvider(); HashMap<Integer, Subject> subs = new HashMap<Integer, Subject>(); for (SubjectReference sub : player.getParents()) { if (sub.getCollectionIdentifier().equals(ps.getGroupSubjects().getIdentifier()) && (sub.getSubjectIdentifier() != null)) { Subject subj = sub.resolve().get(); subs.put(subj.getParents().size(), subj); } } return subs.isEmpty() ? "" : subs.get(Collections.max(subs.keySet())).getFriendlyIdentifier().isPresent() ? subs.get(Collections.max(subs.keySet())).getFriendlyIdentifier().get() : ""; } catch (InterruptedException | ExecutionException e) { } return ""; }
private static Subject createSubjectWithWeight(String name, int weight, Subject... parents) { Subject subject = Mockito.mock(Subject.class); Mockito.when(subject.getIdentifier()).thenReturn(name); Mockito.when(subject.getOption(Mockito.anySetOf(Context.class), Mockito.eq("nucleus.list.weight"))) .thenReturn(Optional.of(String.valueOf(weight))); Mockito.when(subject.getOption(Mockito.eq("nucleus.list.weight"))).thenReturn(Optional.of(String.valueOf(weight))); List<SubjectReference> lsr = getSubjectReferences(Arrays.asList(parents)); Mockito.when(subject.getParents()).thenReturn(lsr); Mockito.when(subject.getParents(Mockito.anySetOf(Context.class))).thenReturn(lsr); return subject; }
private static Subject createSubject(String name, Subject... parents) { Subject subject = Mockito.mock(Subject.class); List<Subject> ls = Arrays.asList(parents); Mockito.when(subject.getIdentifier()).thenReturn(name); Mockito.when(subject.getOption(Mockito.anySetOf(Context.class), Mockito.eq("nucleus.list.weight"))) .then(x -> ls.stream().map(y -> y.getOption("nucleus.list.weight")).filter(Optional::isPresent).findFirst().orElse(Optional.empty())); Mockito.when(subject.getOption(Mockito.eq("nucleus.list.weight"))) .then(x -> ls.stream().map(y -> y.getOption("nucleus.list.weight")).filter(Optional::isPresent).findFirst().orElse(Optional.empty())); List<SubjectReference> lsr = getSubjectReferences(Arrays.asList(parents)); Mockito.when(subject.getParents()).thenReturn(lsr); Mockito.when(subject.getParents(Mockito.anySetOf(Context.class))).thenReturn(lsr); return subject; }