/** * 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.childresource; import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.ExternalChildResourceImpl; import rx.Completable; import rx.Observable; import rx.schedulers.Schedulers; class PulletImpl extends ExternalChildResourceImpl<Pullet, Object, ChickenImpl, Object> implements Pullet { Integer age; private FailFlag failFlag = FailFlag.None; PulletImpl(String name, ChickenImpl parent) { super(name, parent, new Object()); } public PulletImpl withAge(Integer age) { this.age = age; return this; } public PulletImpl withFailFlag(FailFlag failFlag) { this.failFlag = failFlag; return this; } public ChickenImpl attach() { return this.parent().withPullet(this); } @Override public Observable<Pullet> createAsync() { try { Thread.sleep(2000); } catch (InterruptedException ex) { } if (this.failFlag == FailFlag.OnCreate) { return Observable.error(new Exception("Creation of " + this.name() + " failed")); } Pullet self = this; return Observable .just(self) .observeOn(Schedulers.computation()); } @Override public Observable<Pullet> updateAsync() { try { Thread.sleep(2000); } catch (InterruptedException ex) { } if (this.failFlag == FailFlag.OnUpdate) { return Observable.error(new Exception("Update of " + this.name() + " failed")); } Pullet self = this; return Observable .just(self) .observeOn(Schedulers.computation()); } @Override public Observable<Void> deleteAsync() { try { Thread.sleep(2000); } catch (InterruptedException ex) { } if (this.failFlag == FailFlag.OnDelete) { return Observable.error(new Exception("Deletion of " + this.name() + " failed")); } return Observable.just(null); } @Override protected Observable<Object> getInnerAsync() { return Observable.just(null); } @Override public String id() { return null; } enum FailFlag { None, OnCreate, OnUpdate, OnDelete } }