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))
)
);
}
DeviceAccessFacadeImpl.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:wayf-cloud
作者:
评论列表
文章目录