VaultImpl.java 文件源码

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

项目:azure-libraries-for-java 作者:
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();
            }
        });
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号