// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.azurestack.implementation;

import com.azure.resourcemanager.azurestack.fluent.models.ExtendedProductInner;
import com.azure.resourcemanager.azurestack.models.ComputeRole;
import com.azure.resourcemanager.azurestack.models.DataDiskImage;
import com.azure.resourcemanager.azurestack.models.ExtendedProduct;
import com.azure.resourcemanager.azurestack.models.OperatingSystem;
import com.azure.resourcemanager.azurestack.models.OsDiskImage;
import java.util.Collections;
import java.util.List;

public final class ExtendedProductImpl implements ExtendedProduct {
    private ExtendedProductInner innerObject;

    private final com.azure.resourcemanager.azurestack.AzureStackManager serviceManager;

    ExtendedProductImpl(
        ExtendedProductInner innerObject, com.azure.resourcemanager.azurestack.AzureStackManager serviceManager) {
        this.innerObject = innerObject;
        this.serviceManager = serviceManager;
    }

    public String galleryPackageBlobSasUri() {
        return this.innerModel().galleryPackageBlobSasUri();
    }

    public String productKind() {
        return this.innerModel().productKind();
    }

    public String version() {
        return this.innerModel().version();
    }

    public OsDiskImage osDiskImage() {
        return this.innerModel().osDiskImage();
    }

    public List<DataDiskImage> dataDiskImages() {
        List<DataDiskImage> inner = this.innerModel().dataDiskImages();
        if (inner != null) {
            return Collections.unmodifiableList(inner);
        } else {
            return Collections.emptyList();
        }
    }

    public ComputeRole computeRole() {
        return this.innerModel().computeRole();
    }

    public Boolean isSystemExtension() {
        return this.innerModel().isSystemExtension();
    }

    public String uri() {
        return this.innerModel().uri();
    }

    public Boolean supportMultipleExtensions() {
        return this.innerModel().supportMultipleExtensions();
    }

    public OperatingSystem vmOsType() {
        return this.innerModel().vmOsType();
    }

    public Boolean vmScaleSetEnabled() {
        return this.innerModel().vmScaleSetEnabled();
    }

    public ExtendedProductInner innerModel() {
        return this.innerObject;
    }

    private com.azure.resourcemanager.azurestack.AzureStackManager manager() {
        return this.serviceManager;
    }
}
