package com.apigee.sdk.data.client.callbacks;
import android.os.AsyncTask;
/**
* Default async request handler
*/
public abstract class ClientAsyncTask<T> extends AsyncTask<Void, Exception, T> {
ClientCallback<T> callback;
/**
* Default constructor for starting an async request
*/
public ClientAsyncTask(ClientCallback<T> callback) {
this.callback = callback;
}
@Override
protected T doInBackground(Void... v) {
try {
return doTask();
} catch (Exception e) {
this.publishProgress(e);
}
return null;
}
/**
* Starts the async request
*/
public abstract T doTask();
@Override
protected void onPostExecute(T response) {
if (callback != null) {
callback.onResponse(response);
}
}
@Override
protected void onProgressUpdate(Exception... e) {
if ((callback != null) && (e != null) && (e.length > 0)) {
callback.onException(e[0]);
}
}
}