/* * Copyright 2011 - AndroidQuery.com (tinyeeliu@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.smartandroid.sa.aq; import java.net.HttpURLConnection; import java.util.LinkedHashSet; import org.apache.http.HttpRequest; import android.content.Context; public abstract class AccountHandle { private LinkedHashSet<AbstractAjaxCallback<?, ?>> callbacks; public synchronized void auth(AbstractAjaxCallback<?, ?> cb){ if(callbacks == null){ callbacks = new LinkedHashSet<AbstractAjaxCallback<?,?>>(); callbacks.add(cb); auth(); }else{ callbacks.add(cb); } } public abstract boolean authenticated(); protected synchronized void success(Context context){ if(callbacks != null){ for(AbstractAjaxCallback<?, ?> cb: callbacks){ cb.async(context); } callbacks = null; } } protected synchronized void failure(Context context, int code, String message){ if(callbacks != null){ for(AbstractAjaxCallback<?, ?> cb: callbacks){ cb.failure(code, message); } callbacks = null; } } protected abstract void auth(); public abstract boolean expired(AbstractAjaxCallback<?, ?> cb, AjaxStatus status); public abstract boolean reauth(AbstractAjaxCallback<?, ?> cb); public void applyToken(AbstractAjaxCallback<?, ?> cb, HttpRequest request){ } public void applyToken(AbstractAjaxCallback<?, ?> cb, HttpURLConnection conn){ } public String getNetworkUrl(String url){ return url; } public String getCacheUrl(String url){ return url; } public void unauth(){ } }