Я использую Spring Boot и Webflux. Интересно, как использовать мои allUserGroups:
public Mono<ResponseEntity<Flux<GroupTreeItem>>> userAllTreeGroups(
//1
Flux<UUID> groupIds = userGroupService
.findUserGroupByEmail(email)
.flatMap(groupById -> userGroupService.findUserTreeGroup(groupById.getId(), email))
.map(GroupTreeItem::getId);
//2
rolePrivilegesService
.filterGroupIdsForUserPrivilege(Arrays.asList(allUserGroups?????????), "group.permission.all")
.flatMap(filteredGroupId -> userGroupService.findUserTreeGroup(filteredGroupId, email))
.map(ResponseEntity::ok)
.defaultIfEmpty(ResponseEntity.notFound().build());
}
, где:
public Mono<List<UUID>> filterGroupIdsForUserPrivilege(List<UUID> groupIds, String privilege)
и
public class GroupTreeItem {
@JsonProperty("id")
private UUID id;
...
...}
RECAP: моя проблема в том, как передать
Flux<UUID> groupIds
в:
rolePrivilegesService
.filterGroupIdsForUserPrivilege(myListOfUUID, "group.permission.all")
А вот тело
userGroupService.findUserTreeGroup:
public Mono<GroupTreeItem> findUserTreeGroup(UUID groupId, String email) {
return groupByIdRepo.findById(groupId).flatMap(group -> findAndPopulateChildData(email, group));
}
Как этого добиться в Webflux без разрыва цепочки в качестве неблокирующей операции?