private Observable<List<AccessPolicy>> populateAccessPolicies() {
List<Observable<?>>observables = new ArrayList<>();
for (final AccessPolicyImpl accessPolicy : accessPolicies) {
if (accessPolicy.objectId() == null) {
if (accessPolicy.userPrincipalName() != null) {
observables.add(graphRbacManager.users().getByNameAsync(accessPolicy.userPrincipalName())
.subscribeOn(SdkContext.getRxScheduler())
.doOnNext(new Action1<ActiveDirectoryUser>() {
@Override
public void call(ActiveDirectoryUser user) {
if (user == null) {
throw new CloudException(String.format("User principal name %s is not found in tenant %s",
accessPolicy.userPrincipalName(), graphRbacManager.tenantId()), null);
}
accessPolicy.forObjectId(user.id());
}
}));
} else if (accessPolicy.servicePrincipalName() != null) {
observables.add(graphRbacManager.servicePrincipals().getByNameAsync(accessPolicy.servicePrincipalName())
.subscribeOn(SdkContext.getRxScheduler())
.doOnNext(new Action1<ServicePrincipal>() {
@Override
public void call(ServicePrincipal sp) {
if (sp == null) {
throw new CloudException(String.format("User principal name %s is not found in tenant %s",
accessPolicy.userPrincipalName(), graphRbacManager.tenantId()), null);
}
accessPolicy.forObjectId(sp.id());
}
}));
} else {
throw new IllegalArgumentException("Access policy must specify object ID.");
}
}
}
if (observables.isEmpty()) {
return Observable.just(accessPolicies());
} else {
return Observable.zip(observables, new FuncN<List<AccessPolicy>>() {
@Override
public List<AccessPolicy> call(Object... args) {
return accessPolicies();
}
});
}
}
VaultImpl.java 文件源码
java
阅读 33
收藏 0
点赞 0
评论 0
项目:azure-libraries-for-java
作者:
评论列表
文章目录