/** * 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.appservice.implementation; import com.microsoft.azure.PagedList; import com.microsoft.azure.management.apigeneration.LangDefinition; import com.microsoft.azure.management.appservice.FunctionApp; import com.microsoft.azure.management.appservice.FunctionApps; import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.TopLevelModifiableResourcesImpl; import com.microsoft.azure.management.resources.fluentcore.utils.PagedListConverter; import rx.Completable; /** * The implementation for WebApps. */ @LangDefinition(ContainerName = "/Microsoft.Azure.Management.AppService.Fluent") class FunctionAppsImpl extends TopLevelModifiableResourcesImpl< FunctionApp, FunctionAppImpl, SiteInner, WebAppsInner, AppServiceManager> implements FunctionApps { private final PagedListConverter<SiteInner, FunctionApp> converter; FunctionAppsImpl(final AppServiceManager manager) { super(manager.inner().webApps(), manager); converter = new PagedListConverter<SiteInner, FunctionApp>() { @Override public FunctionApp typeConvert(SiteInner siteInner) { FunctionAppImpl impl = wrapModel(siteInner, manager.inner().webApps().getConfiguration(siteInner.resourceGroup(), siteInner.name())); return impl.cacheSiteProperties().toBlocking().single(); } @Override protected boolean filter(SiteInner inner) { return "functionapp".equals(inner.kind()); } }; } @Override public FunctionApp getByResourceGroup(String groupName, String name) { SiteInner siteInner = this.inner().getByResourceGroup(groupName, name); if (siteInner == null) { return null; } return wrapModel(siteInner, this.inner().getConfiguration(groupName, name)).cacheSiteProperties().toBlocking().single(); } @Override protected Completable deleteInnerAsync(String resourceGroupName, String name) { return this.inner().deleteAsync(resourceGroupName, name).toCompletable(); } @Override protected FunctionAppImpl wrapModel(String name) { return new FunctionAppImpl(name, new SiteInner(), null, this.manager()); } @Override protected FunctionAppImpl wrapModel(SiteInner inner) { return wrapModel(inner, null); } private FunctionAppImpl wrapModel(SiteInner inner, SiteConfigResourceInner configResourceInner) { if (inner == null) { return null; } return new FunctionAppImpl(inner.name(), inner, configResourceInner, this.manager()); } protected PagedList<FunctionApp> wrapList(PagedList<SiteInner> pagedList) { return converter.convert(pagedList); } @Override public FunctionAppImpl define(String name) { return wrapModel(name); } @Override public Completable deleteByResourceGroupAsync(String groupName, String name) { return this.inner().deleteAsync(groupName, name).toCompletable(); } }