package com.kth.baasio.callback; import com.kth.baasio.entity.user.BaasioUser; import com.kth.baasio.exception.BaasioException; import org.springframework.web.client.HttpClientErrorException; import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; public abstract class BaasioSignUpAsyncTask extends AsyncTask<Void, BaasioException, BaasioUser> { BaasioSignUpCallback mCallback; private Handler mHandler = new Handler(Looper.getMainLooper()); public BaasioSignUpAsyncTask(BaasioSignUpCallback callback) { this.mCallback = callback; } private void onException(final BaasioException e) { mHandler.post(new Runnable() { @Override public void run() { if (mCallback != null) { mCallback.onException(e); } } }); } @Override protected BaasioUser doInBackground(Void... v) { try { return doTask(); } catch (HttpClientErrorException e) { onException(new BaasioException(e.getStatusCode(), e.getResponseBodyAsString())); } catch (BaasioException e) { onException(e); } catch (Exception e) { onException(new BaasioException(e)); } return null; } public abstract BaasioUser doTask() throws BaasioException; @Override protected void onPostExecute(BaasioUser response) { if (mCallback != null && response != null) { mCallback.onResponse(response); } } @Override protected void onProgressUpdate(BaasioException... e) { if ((mCallback != null) && (e != null) && (e.length > 0)) { mCallback.onException(e[0]); } } }