/**
* 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.resources.implementation;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.resources.PolicyDefinition;
import com.microsoft.azure.management.resources.PolicyDefinitions;
import com.microsoft.azure.management.resources.PolicyType;
import com.microsoft.azure.management.resources.ResourceGroups;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.CreatableWrappersImpl;
import rx.Completable;
import rx.Observable;
/**
* The implementation for {@link ResourceGroups} and its parent interfaces.
*/
final class PolicyDefinitionsImpl
extends CreatableWrappersImpl<PolicyDefinition, PolicyDefinitionImpl, PolicyDefinitionInner>
implements PolicyDefinitions {
private final PolicyDefinitionsInner client;
/**
* Creates an instance of the implementation.
*
* @param innerClient the inner policies client
*/
PolicyDefinitionsImpl(final PolicyDefinitionsInner innerClient) {
this.client = innerClient;
}
@Override
public PagedList<PolicyDefinition> list() {
return wrapList(client.list());
}
@Override
public PolicyDefinitionImpl getByName(String name) {
return wrapModel(client.get(name));
}
@Override
public Completable deleteByIdAsync(String name) {
return client.deleteAsync(name).toCompletable();
}
@Override
public PolicyDefinitionImpl define(String name) {
return wrapModel(name);
}
@Override
protected PolicyDefinitionImpl wrapModel(String name) {
return new PolicyDefinitionImpl(
new PolicyDefinitionInner().withName(name).withPolicyType(PolicyType.NOT_SPECIFIED).withDisplayName(name),
client);
}
@Override
protected PolicyDefinitionImpl wrapModel(PolicyDefinitionInner inner) {
return new PolicyDefinitionImpl(inner, client);
}
@Override
public Observable<PolicyDefinition> listAsync() {
return wrapPageAsync(client.listAsync());
}
}