package com.twilio.base; import com.google.common.util.concurrent.ListenableFuture; import com.twilio.Twilio; import com.twilio.http.TwilioRestClient; import java.util.concurrent.Callable; /** * Executor for deletes of a resource. * * @param <T> type of the resource */ public abstract class Deleter<T extends Resource> { /** * Execute an async request using default client. * * @return future that resolves to true if the object was deleted */ public ListenableFuture<Boolean> deleteAsync() { return deleteAsync(Twilio.getRestClient()); } /** * Execute an async request using specified client. * * @param client client used to make request * @return future that resolves to true if the object was deleted */ public ListenableFuture<Boolean> deleteAsync(final TwilioRestClient client) { return Twilio.getExecutorService().submit(new Callable<Boolean>() { public Boolean call() { return delete(client); } }); } /** * Execute a request using default client. * * @return true if the object was deleted */ public boolean delete() { return delete(Twilio.getRestClient()); } /** * Execute a request using specified client. * * @param client client used to make request * @return true if the object was deleted */ public abstract boolean delete(final TwilioRestClient client); }