
com.azure.resourcemanager.resources.implementation.ResourceGroupsImpl 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.core.util.Context;
import com.azure.core.util.logging.ClientLogger;
import com.azure.resourcemanager.resources.fluentcore.model.Accepted;
import com.azure.resourcemanager.resources.fluentcore.model.implementation.AcceptedImpl;
import com.azure.resourcemanager.resources.ResourceManager;
import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils;
import com.azure.resourcemanager.resources.models.ForceDeletionResourceType;
import com.azure.resourcemanager.resources.models.ResourceGroup;
import com.azure.resourcemanager.resources.models.ResourceGroups;
import com.azure.resourcemanager.resources.fluentcore.arm.ResourceUtils;
import com.azure.resourcemanager.resources.fluentcore.arm.collection.implementation.CreatableResourcesImpl;
import com.azure.resourcemanager.resources.fluent.models.ResourceGroupInner;
import reactor.core.publisher.Mono;
import java.util.Collection;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.azure.resourcemanager.resources.fluentcore.utils.PagedConverter;
/**
* The implementation for ResourceGroups.
*/
public final class ResourceGroupsImpl
extends CreatableResourcesImpl implements ResourceGroups {
private final ClientLogger logger = new ClientLogger(ResourceGroupsImpl.class);
private final ResourceManager resourceManager;
public ResourceGroupsImpl(final ResourceManager resourceManager) {
this.resourceManager = resourceManager;
}
@Override
public PagedIterable list() {
return wrapList(manager().serviceClient().getResourceGroups().list());
}
@Override
public PagedIterable listByTag(String tagName, String tagValue) {
return new PagedIterable<>(this.listByTagAsync(tagName, tagValue));
}
@Override
public PagedFlux listByTagAsync(String tagName, String tagValue) {
return wrapPageAsync(manager().serviceClient()
.getResourceGroups()
.listAsync(ResourceManagerUtils.createOdataFilterForTags(tagName, tagValue), null));
}
@Override
public ResourceGroupImpl getByName(String name) {
return wrapModel(manager().serviceClient().getResourceGroups().get(name));
}
@Override
public Mono getByNameAsync(String name) {
return manager().serviceClient().getResourceGroups().getAsync(name).map(this::wrapModel);
}
@Override
public void deleteByName(String name) {
deleteByNameAsync(name).block();
}
@Override
public Mono deleteByNameAsync(String name, Collection forceDeletionResourceTypes) {
return manager().serviceClient()
.getResourceGroups()
.deleteAsync(name, forceDeletionTypes(forceDeletionResourceTypes));
}
@Override
public void deleteByName(String name, Collection forceDeletionResourceTypes) {
deleteByNameAsync(name, forceDeletionResourceTypes).block();
}
@Override
public Mono deleteByNameAsync(String name) {
return manager().serviceClient().getResourceGroups().deleteAsync(name);
}
@Override
public ResourceGroupImpl define(String name) {
return wrapModel(name);
}
@Override
public boolean contain(String name) {
return manager().serviceClient().getResourceGroups().checkExistence(name);
}
@Override
protected ResourceGroupImpl wrapModel(String name) {
return new ResourceGroupImpl(new ResourceGroupInner(), name, manager().serviceClient());
}
@Override
protected ResourceGroupImpl wrapModel(ResourceGroupInner inner) {
if (inner == null) {
return null;
}
return new ResourceGroupImpl(inner, inner.name(), manager().serviceClient());
}
@Override
public Accepted beginDeleteByName(String name) {
return beginDeleteByName(name, null);
}
@Override
public Accepted beginDeleteByName(String name,
Collection forceDeletionResourceTypes) {
return AcceptedImpl.newAccepted(logger, this.manager().serviceClient().getHttpPipeline(),
this.manager().serviceClient().getDefaultPollInterval(),
() -> this.manager()
.serviceClient()
.getResourceGroups()
.deleteWithResponseAsync(name, forceDeletionTypes(forceDeletionResourceTypes))
.block(),
Function.identity(), Void.class, null, Context.NONE);
}
// @Override
// public Mono beginDeleteByNameAsync(String name) {
// // DELETE
// return client.beginDeleteWithoutPollingAsync(name);
// }
@Override
public Mono deleteByIdAsync(String id) {
return deleteByNameAsync(ResourceUtils.nameFromResourceId(id));
}
@Override
public PagedFlux listAsync() {
return PagedConverter.mapPage(this.manager().serviceClient().getResourceGroups().listAsync(),
inner -> wrapModel(inner));
}
@Override
public ResourceManager manager() {
return resourceManager;
}
private static String forceDeletionTypes(Collection forceDeletionResourceTypes) {
String typesInStr = null;
if (forceDeletionResourceTypes != null && !forceDeletionResourceTypes.isEmpty()) {
typesInStr = forceDeletionResourceTypes.stream()
.map(ForceDeletionResourceType::toString)
.collect(Collectors.joining(","));
}
return typesInStr;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy