DeviceAccessFacadeImpl.java 文件源码

java
阅读 30 收藏 0 点赞 0 评论 0

项目:wayf-cloud 作者:
private Completable inflateIdentityProviders(Iterable<DeviceAccess> deviceAccesss, DeviceAccessQuery query) {
    // Return as complete if authenticatedBy is not a requested field
    if (query.getInflationPolicy() == null || !query.getInflationPolicy().hasChildField(DeviceAccessQuery.IDENTITY_PROVIDER)) {
        return Completable.complete();
    }

    Multimap<Long, DeviceAccess> deviceAccesssByIdpId = HashMultimap.create();

    return Observable.fromIterable(deviceAccesss)
            // Filter out publisher sessions with no publisher
            .filter((deviceAccess) -> deviceAccess.getIdentityProvider() != null && deviceAccess.getIdentityProvider().getId() != null)

            // Collect all of the publisher sessions and their identity provider IDs into a map
            .collectInto(deviceAccesssByIdpId, (map, deviceAccess) -> map.put(deviceAccess.getIdentityProvider().getId(), deviceAccess))

            // Fetch all of the publishers for those publisher IDs
            .flatMapObservable((map) -> map.keySet().isEmpty()? Observable.empty() : identityProviderFacade.filter(new IdentityProviderQuery().ids(map.keySet())))

            // For each identity provider returned, map it to each publisher session that had its ID
            .flatMapCompletable((identityProvider) ->
                    Observable.fromIterable(deviceAccesssByIdpId.get(identityProvider.getId()))
                            .flatMapCompletable((deviceAccess) ->
                                    Completable.fromAction(() -> deviceAccess.setIdentityProvider(identityProvider))
                            )
            );
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号