private Stream<UserGroup> streamAllContainingGroups() { Set<UserGroup> groups = getContainingGroups(); return Stream.concat(groups.stream(), groups.stream().flatMap(group -> group.getAllContainingGroups().stream())); }
@Nonnull @Override public Set<GroupPrincipal> getAllGroupPrincipals() { return streamAllContainingGroups() .map(group -> group.getRootPrincial()) .collect(Collectors.toSet()); }
@Nonnull public Stream<User> streamAllUsers() { return streamAllGroups().flatMap(g -> StreamSupport.stream(g.getUsers().spliterator(), false)); }
@Override public GroupPrincipal getPrincipal() { Set<Principal> members = StreamSupport.stream(getGroups().spliterator(), false) .map(g -> g.getPrincipal()) .collect(Collectors.toSet()); return new GroupPrincipal(getSystemName(), members); }
@Nonnull public Stream<UserGroup> streamAllGroups() { return StreamSupport.stream(getGroups().spliterator(), false).flatMap(g -> g.streamAllGroups()); }
@Override public void deleteGroup(@Nonnull final UserGroup group) { this.actionsProvider.getAllowedActions(AccessController.SERVICES).ifPresent(allowed -> allowed.disableAll(group.getPrincipal())); this.membershipProvider.findAll().forEach(membership -> membership.removeMember(group.getPrincipal())); delete(group); }