@Override public Object adapt(Call<Object> call) { // Delegate to get the normal Observable... Observable<?> o = delegate.adapt(call); // ...and change it to send notifications to the observer on the specified scheduler. return o.observeOn(scheduler); }
@Override ReturnT invoke(Object[] args) { return callAdapter.adapt( new OkHttpCall<>(requestFactory, args, callFactory, responseConverter)); } }
@Override public T invoke(Object proxy, Method method, Object[] args) throws Throwable { Type returnType = method.getGenericReturnType(); Annotation[] methodAnnotations = method.getAnnotations(); CallAdapter<R, T> callAdapter = (CallAdapter<R, T>) retrofit.callAdapter(returnType, methodAnnotations); return callAdapter.adapt(behaviorCall); } });
@Override ReturnT invoke(Object[] args) { return callAdapter.adapt( new OkHttpCall<>(requestFactory, args, callFactory, responseConverter)); } }
@Override public <R> Single<?> adapt(Call<R> call) { Observable<?> observable = callAdapter.adapt(call); return observable.toSingle(); } };
@Override public Object adapt(Call<R> call) { DefaultingCall<R> defaultingCall = new DefaultingCall<>(call, defaultValue); return delegate.adapt(defaultingCall); } }
@Override public T adapt(Call<R> call) { return delegate.adapt(new LoggingCall<>(logger, call)); } }
@SuppressWarnings("unchecked") @Override public <R> Observable<?> adapt(Call<R> call) { return ((Observable) wrapped.adapt(call)).onErrorResumeNext(new Func1<Throwable, Observable>() { @Override public Observable call(Throwable throwable) { return Observable.error(asRetrofitException(throwable)); } }); }
<T> T adapt(Method method, NetworkBehavior networkBehavior, Call<?> call) { try { Class<?> behaviorCallClass = Class.forName("retrofit2.mock.BehaviorCall"); Constructor<?> constructor = behaviorCallClass.getDeclaredConstructor(NetworkBehavior.class, ExecutorService.class, Call.class); constructor.setAccessible(true); Call<?> behaviorCall = (Call<?>) constructor.newInstance(networkBehavior, Executors.newCachedThreadPool(), call); return (T) retrofit .callAdapter(method.getGenericReturnType(), method.getAnnotations()) .adapt(behaviorCall); } catch (Exception e) { throw new RuntimeException(e); } }