package com.microsoft.azure.management.network.implementation;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.network.PacketCapture;
import com.microsoft.azure.management.network.PacketCaptures;
import com.microsoft.azure.management.resources.fluentcore.arm.ResourceId;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.CreatableResourcesImpl;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.ReadableWrappersImpl;
import com.microsoft.azure.management.resources.fluentcore.utils.PagedListConverter;
import com.microsoft.rest.ServiceCallback;
import com.microsoft.rest.ServiceFuture;
import rx.Completable;
import rx.Observable;
import rx.functions.Func1;
import java.util.List;
@LangDefinition
class PacketCapturesImpl extends
CreatableResourcesImpl<PacketCapture,
PacketCaptureImpl,
PacketCaptureResultInner>
implements PacketCaptures {
private final NetworkWatcherImpl parent;
protected final PacketCapturesInner innerCollection;
PacketCapturesImpl(PacketCapturesInner innerCollection, NetworkWatcherImpl parent) {
this.parent = parent;
this.innerCollection = innerCollection;
}
@Override
public final PagedList<PacketCapture> list() {
return (new PagedListConverter<PacketCaptureResultInner, PacketCapture>() {
@Override
public Observable<PacketCapture> typeConvertAsync(PacketCaptureResultInner inner) {
return Observable.just((PacketCapture) wrapModel(inner));
}
}).convert(ReadableWrappersImpl.convertToPagedList(inner().list(parent.resourceGroupName(), parent.name())));
}
@Override
public Observable<PacketCapture> listAsync() {
Observable<List<PacketCaptureResultInner>> list = inner().listAsync(parent.resourceGroupName(), parent.name());
return ReadableWrappersImpl.convertListToInnerAsync(list).map(new Func1<PacketCaptureResultInner, PacketCapture>() {
@Override
public PacketCapture call(PacketCaptureResultInner inner) {
return wrapModel(inner);
}
});
}
@Override
protected PacketCaptureImpl wrapModel(String name) {
return new PacketCaptureImpl(name, parent, new PacketCaptureResultInner(), inner());
}
protected PacketCaptureImpl wrapModel(PacketCaptureResultInner inner) {
return (inner == null) ? null : new PacketCaptureImpl(inner.name(), parent, inner, inner());
}
@Override
public PacketCaptureImpl define(String name) {
return new PacketCaptureImpl(name, parent, new PacketCaptureResultInner(), inner());
}
@Override
public Observable<PacketCapture> getByNameAsync(String name) {
return inner().getAsync(parent.resourceGroupName(), parent.name(), name)
.map(new Func1<PacketCaptureResultInner, PacketCapture>() {
@Override
public PacketCapture call(PacketCaptureResultInner inner) {
return wrapModel(inner);
}
});
}
@Override
public PacketCapture getByName(String name) {
return getByNameAsync(name).toBlocking().last();
}
@Override
public void deleteByName(String name) {
deleteByNameAsync(name).await();
}
@Override
public ServiceFuture<Void> deleteByNameAsync(String name, ServiceCallback<Void> callback) {
return this.inner().deleteAsync(parent.resourceGroupName(),
parent.name(),
name,
callback);
}
@Override
public Completable deleteByNameAsync(String name) {
return this.inner().deleteAsync(parent.resourceGroupName(),
parent.name(),
name).toCompletable();
}
@Override
public PacketCapturesInner inner() {
return innerCollection;
}
@Override
public Completable deleteByIdAsync(String id) {
ResourceId resourceId = ResourceId.fromString(id);
return this.inner().deleteAsync(resourceId.resourceGroupName(), resourceId.parent().name(), resourceId.name()).toCompletable();
}
}