@Override public Call<T> clone() { return call.clone(); }
@Override public MyCall<T> clone() { return new MyCallAdapter<>(call.clone(), callbackExecutor); } }
@SuppressWarnings("CloneDoesntCallSuperClone") // Performing deep clone. @Override public Call<T> clone() { return new ExecutorCallbackCall<>(callbackExecutor, delegate.clone()); }
@SuppressWarnings("CloneDoesntCallSuperClone") // We are a final type & this saves clearing state. @Override public Call<T> clone() { return new BehaviorCall<>(behavior, backgroundExecutor, delegate.clone()); }
@Override protected void subscribeActual(Observer<? super Response<T>> observer) { // Since Call is a one-shot type, clone it for each new observer. Call<T> call = originalCall.clone(); CallCallback<T> callback = new CallCallback<>(call, observer); observer.onSubscribe(callback); if (!callback.isDisposed()) { call.enqueue(callback); } }
@SuppressWarnings("CloneDoesntCallSuperClone") // Performing deep clone. @Override public Call<T> clone() { return new ExecutorCallbackCall<>(callbackExecutor, delegate.clone()); }
@Override public void call(Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); final CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter); call.enqueue(new Callback<T>() { @Override public void onResponse(Call<T> call, Response<T> response) { arbiter.emitResponse(response); } @Override public void onFailure(Call<T> call, Throwable t) { Exceptions.throwIfFatal(t); arbiter.emitError(t); } }); } }
@Override public void call(Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter); Response<T> response; try { response = call.execute(); } catch (Throwable t) { Exceptions.throwIfFatal(t); arbiter.emitError(t); return; } arbiter.emitResponse(response); } }
@Test public void passThroughCallsToDecoratedObject() throws IOException { final Call<String> call = mock(StringCall.class); final Call<String> decorated = new DecoratedCall<>(call); decorated.cancel(); Mockito.verify(call).cancel(); decorated.enqueue(null); Mockito.verify(call).enqueue(any()); decorated.isExecuted(); Mockito.verify(call).isExecuted(); decorated.isCanceled(); Mockito.verify(call).isCanceled(); decorated.clone(); Mockito.verify(call).clone(); decorated.request(); Mockito.verify(call).request(); decorated.execute(); Mockito.verify(call).execute(); }
@Override protected void subscribeActual(Observer<? super Response<T>> observer) { Call<T> call = originalCall.clone(); CallDisposable disposable = new CallDisposable(call); observer.onSubscribe(disposable);
/** * Wrapper method for Retrofit's {@link Call#clone()} call, useful for getting call information. * * @return cloned call * @since 3.5.0 */ public Call<List<FeatureCollection>> cloneBatchCall() { return getBatchCall().clone(); }
/** * Retries a call after a waiting period. * * @return The response of the call. */ private Response<ResponseBody> retryCall(Call<ResponseBody> call) throws IOException, InterruptedException { Thread.sleep(SERVER_ERROR_WAITING_TIME * 1000); return call.clone().execute(); }
/** * Wrapper method for Retrofits {@link Call#clone()} call, useful for getting call information. * * @return cloned call * @since 1.0.0 */ public Call<List<GeocodingResponse>> cloneBatchCall() { return getBatchCall().clone(); }
/** * Wrapper method for Retrofit's {@link Call#clone()} call, useful for getting call information. * * @return cloned call * @since 3.5.0 */ public Call<List<FeatureCollection>> cloneBatchCall() { return getBatchCall().clone(); }
/** * Wrapper method for Retrofits {@link Call#clone()} call, useful for getting call information. * * @return cloned call * @since 3.0.0 */ public Call<T> cloneCall() { return getCall().clone(); }
/** * Wrapper method for Retrofits {@link Call#clone()} call, useful for getting call information. * * @return cloned call * @since 1.0.0 */ public Call<List<GeocodingResponse>> cloneBatchCall() { return getBatchCall().clone(); }
@Override public Object adaptResponse(Object response, Metadata<Retrofit> metadata) { checkReturnMethodTypeIsCall(metadata); Call call = (Call) response; try { Response payload = call.clone().execute(); Object body = payload.body(); return body; } catch (IOException e) { throw new RuntimeException(e); } }
@Override public void accept(FluxSink<Response<T>> sink) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); DisposableCallback<T> callback = new DisposableCallback<>(call, sink); sink.onDispose(callback); call.enqueue(callback); }
@Override public Cached<T> clone() { return new CachedCall<>(mExecutor, mCall.clone(), responseType(), mAnnotations, mRetrofit, mCachingSystem); }
@Override public SmartCall<T> clone() { return new SmartCallImpl<>(callbackExecutor, baseCall.clone(), responseType(), annotations, retrofit, cachingSystem); }