package com.koushikdutta.ion.mock; import com.koushikdutta.async.http.AsyncHttpRequest; import com.koushikdutta.ion.Ion; import com.koushikdutta.ion.Loader; import com.koushikdutta.ion.future.ResponseFuture; import com.koushikdutta.ion.loader.SimpleLoader; import java.lang.reflect.Type; /** * Created by koush on 3/6/15. */ public class MockLoader extends SimpleLoader { public static void install(Ion ion, MockRequestHandler requestHandler) { MockLoader mockLoader = new MockLoader(requestHandler); for (Loader loader: ion.configure().getLoaders()) { if (loader instanceof MockLoader) throw new RuntimeException("MockLoader already installed."); } ion.configure().addLoader(0, mockLoader); } MockRequestHandler requestHandler; private MockLoader(MockRequestHandler requestHandler) { this.requestHandler = requestHandler; } @Override public <T> ResponseFuture<T> load(Ion ion, AsyncHttpRequest request, Type type) { T result = (T)requestHandler.request(request.getUri().toString()); if (result != null) { MockResponseFuture<T> ret = new MockResponseFuture<T>(request); ret.setComplete(result); return ret; } return super.load(ion, request, type); } }