Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See License.txt in the project root for license information.
/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */
package com.microsoft.azure.management.compute.implementation; import com.google.common.collect.Lists; import com.microsoft.azure.Page; import com.microsoft.azure.PagedList; import com.microsoft.azure.management.apigeneration.LangDefinition; import com.microsoft.azure.management.compute.ComputeResourceType; import com.microsoft.azure.management.compute.ComputeSku; import com.microsoft.azure.management.compute.ComputeSkus; import com.microsoft.azure.management.resources.fluentcore.arm.Region; import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.ReadableWrappersImpl; import com.microsoft.rest.RestException; import rx.Observable; import rx.functions.Func1; import java.io.IOException; import java.util.List;
The implementation for ComputeSkus.
/** * The implementation for {@link ComputeSkus}. */
@LangDefinition final class ComputeSkusImpl extends ReadableWrappersImpl<ComputeSku, ComputeSkuImpl, ResourceSkuInner> implements ComputeSkus { private final ComputeManager manager; ComputeSkusImpl(ComputeManager computeManager) { this.manager = computeManager; } @Override protected ComputeSkuImpl wrapModel(ResourceSkuInner inner) { return new ComputeSkuImpl(inner); } @Override public PagedList<ComputeSku> list() { return wrapList(this.inner().list()); } @Override public Observable<ComputeSku> listAsync() { return wrapPageAsync(this.inner().listAsync()); } @Override public PagedList<ComputeSku> listByRegion(String regionName) { return this.listByRegion(Region.fromName(regionName)); } @Override public PagedList<ComputeSku> listByRegion(Region region) { return toPagedList(listByRegionAsync(region)); } @Override public Observable<ComputeSku> listByRegionAsync(String regionName) { return this.listByRegionAsync(Region.fromName(regionName)); } @Override public Observable<ComputeSku> listByRegionAsync(final Region region) { return this.listAsync() .filter(new Func1<ComputeSku, Boolean>() { @Override public Boolean call(ComputeSku computeSku) { return computeSku.regions() != null && computeSku.regions().contains(region); } }); } @Override public ResourceSkusInner inner() { return this.manager.inner().resourceSkus(); } @Override public ComputeManager manager() { return this.manager; } @Override public PagedList<ComputeSku> listByResourceType(ComputeResourceType resourceType) { return toPagedList(listByResourceTypeAsync(resourceType)); } @Override public Observable<ComputeSku> listByResourceTypeAsync(final ComputeResourceType resourceType) { return this.listAsync() .filter(new Func1<ComputeSku, Boolean>() { @Override public Boolean call(ComputeSku computeSku) { return computeSku.resourceType() != null && computeSku.resourceType().equals(resourceType); } }); } @Override public PagedList<ComputeSku> listbyRegionAndResourceType(Region region, ComputeResourceType resourceType) { return toPagedList(listbyRegionAndResourceTypeAsync(region, resourceType)); } @Override public Observable<ComputeSku> listbyRegionAndResourceTypeAsync(final Region region, final ComputeResourceType resourceType) { return this.listAsync() .filter(new Func1<ComputeSku, Boolean>() { @Override public Boolean call(ComputeSku computeSku) { return computeSku.resourceType() != null && computeSku.resourceType().equals(resourceType) && computeSku.regions() != null && computeSku.regions().contains(region); } }); }
Util function to block on an observable and turn that to a paged list with one page.
Params:
  • skuObservable – the observable
Type parameters:
  • <T> – the item type
Returns:a paged list with items collected from the given observable
/** * Util function to block on an observable and turn that to a paged list with one page. * * @param skuObservable the observable * @param <T> the item type * @return a paged list with items collected from the given observable */
private static <T> PagedList<T> toPagedList(final Observable<T> skuObservable) { Page<T> singlePage = new Page<T>() { @Override public List<T> items() { return Lists.newArrayList(skuObservable.toBlocking().toIterable()); } @Override public String nextPageLink() { return null; } }; return new PagedList<T>(singlePage) { @Override public Page<T> nextPage(String s) throws RestException, IOException { return null; } }; } }