package com.octo.android.robospice; import java.util.Set; import com.google.api.client.extensions.android.http.AndroidHttp; import com.google.api.client.http.HttpRequestFactory; import com.google.api.client.http.HttpTransport; import com.octo.android.robospice.request.CachedSpiceRequest; import com.octo.android.robospice.request.googlehttpclient.GoogleHttpClientSpiceRequest; import com.octo.android.robospice.request.listener.RequestListener; /** * This class offers a {@link SpiceService} that injects a * {@link HttpRequestFactory} from Google Http Client into every * {@link GoogleHttpClientSpiceRequest} it has to execute. Developpers can * override {@link #createRequestFactory()} in addition to the usual * {@link #createCacheManager(android.app.Application)} methods to create a * {@link HttpRequestFactory} and configure it. * @author sni */ public abstract class GoogleHttpClientSpiceService extends SpiceService { protected HttpRequestFactory httpRequestFactory; @Override public void onCreate() { super.onCreate(); httpRequestFactory = createRequestFactory(); } public static HttpRequestFactory createRequestFactory() { HttpTransport httpTransport = AndroidHttp.newCompatibleTransport(); return httpTransport.createRequestFactory(); } @Override public void addRequest(CachedSpiceRequest<?> request, Set<RequestListener<?>> listRequestListener) { if (request.getSpiceRequest() instanceof GoogleHttpClientSpiceRequest) { ((GoogleHttpClientSpiceRequest<?>) request.getSpiceRequest()).setHttpRequestFactory(httpRequestFactory); } super.addRequest(request, listRequestListener); } }