All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.resourcemanager.resources.implementation.FeaturesImpl Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.resourcemanager.resources.implementation;

import com.azure.core.http.rest.PagedFlux;
import com.azure.core.http.rest.PagedIterable;
import com.azure.resourcemanager.resources.models.Feature;
import com.azure.resourcemanager.resources.models.Features;
import com.azure.resourcemanager.resources.fluentcore.arm.collection.implementation.ReadableWrappersImpl;
import com.azure.resourcemanager.resources.fluent.models.FeatureResultInner;
import com.azure.resourcemanager.resources.fluent.FeaturesClient;
import reactor.core.publisher.Mono;

/**
 * The implementation of {@link Features}.
 */
public final class FeaturesImpl extends ReadableWrappersImpl
    implements Features {
    private final FeaturesClient client;

    public FeaturesImpl(final FeaturesClient client) {
        this.client = client;
    }

    @Override
    public PagedIterable list() {
        return wrapList(client.listAll());
    }

    @Override
    public Feature register(String resourceProviderName, String featureName) {
        return this.registerAsync(resourceProviderName, featureName).block();
    }

    @Override
    public Mono registerAsync(String resourceProviderName, String featureName) {
        return client.registerAsync(resourceProviderName, featureName)
            .map(featureResultInner -> wrapModel(featureResultInner));
    }

    @Override
    protected FeatureImpl wrapModel(FeatureResultInner inner) {
        if (inner == null) {
            return null;
        }
        return new FeatureImpl(inner);
    }

    @Override
    public PagedFlux listAsync() {
        return wrapPageAsync(client.listAllAsync());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy