140 lines
5.2 KiB
Java
140 lines
5.2 KiB
Java
package retrofit2;
|
|
|
|
import java.lang.annotation.Annotation;
|
|
import java.lang.reflect.ParameterizedType;
|
|
import java.lang.reflect.Type;
|
|
import java.util.concurrent.CompletableFuture;
|
|
import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement;
|
|
import retrofit2.CallAdapter;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public final class CompletableFutureCallAdapterFactory extends CallAdapter.Factory {
|
|
static final CallAdapter.Factory INSTANCE = new CompletableFutureCallAdapterFactory();
|
|
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public static final class BodyCallAdapter<R> implements CallAdapter<R, CompletableFuture<R>> {
|
|
private final Type responseType;
|
|
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public class BodyCallback implements Callback<R> {
|
|
private final CompletableFuture<R> future;
|
|
|
|
public BodyCallback(CompletableFuture<R> completableFuture) {
|
|
this.future = completableFuture;
|
|
}
|
|
|
|
@Override // retrofit2.Callback
|
|
public void onFailure(Call<R> call, Throwable th) {
|
|
this.future.completeExceptionally(th);
|
|
}
|
|
|
|
@Override // retrofit2.Callback
|
|
public void onResponse(Call<R> call, Response<R> response) {
|
|
if (response.isSuccessful()) {
|
|
this.future.complete(response.body());
|
|
} else {
|
|
this.future.completeExceptionally(new HttpException(response));
|
|
}
|
|
}
|
|
}
|
|
|
|
public BodyCallAdapter(Type type) {
|
|
this.responseType = type;
|
|
}
|
|
|
|
@Override // retrofit2.CallAdapter
|
|
public Type responseType() {
|
|
return this.responseType;
|
|
}
|
|
|
|
@Override // retrofit2.CallAdapter
|
|
public CompletableFuture<R> adapt(Call<R> call) {
|
|
CallCancelCompletableFuture callCancelCompletableFuture = new CallCancelCompletableFuture(call);
|
|
call.enqueue(new BodyCallback(callCancelCompletableFuture));
|
|
return callCancelCompletableFuture;
|
|
}
|
|
}
|
|
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public static final class CallCancelCompletableFuture<T> extends CompletableFuture<T> {
|
|
private final Call<?> call;
|
|
|
|
public CallCancelCompletableFuture(Call<?> call) {
|
|
this.call = call;
|
|
}
|
|
|
|
@Override // java.util.concurrent.CompletableFuture, java.util.concurrent.Future
|
|
public boolean cancel(boolean z3) {
|
|
if (z3) {
|
|
this.call.cancel();
|
|
}
|
|
return super.cancel(z3);
|
|
}
|
|
}
|
|
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public static final class ResponseCallAdapter<R> implements CallAdapter<R, CompletableFuture<Response<R>>> {
|
|
private final Type responseType;
|
|
|
|
@IgnoreJRERequirement
|
|
/* loaded from: classes3.dex */
|
|
public class ResponseCallback implements Callback<R> {
|
|
private final CompletableFuture<Response<R>> future;
|
|
|
|
public ResponseCallback(CompletableFuture<Response<R>> completableFuture) {
|
|
this.future = completableFuture;
|
|
}
|
|
|
|
@Override // retrofit2.Callback
|
|
public void onFailure(Call<R> call, Throwable th) {
|
|
this.future.completeExceptionally(th);
|
|
}
|
|
|
|
@Override // retrofit2.Callback
|
|
public void onResponse(Call<R> call, Response<R> response) {
|
|
this.future.complete(response);
|
|
}
|
|
}
|
|
|
|
public ResponseCallAdapter(Type type) {
|
|
this.responseType = type;
|
|
}
|
|
|
|
@Override // retrofit2.CallAdapter
|
|
public Type responseType() {
|
|
return this.responseType;
|
|
}
|
|
|
|
@Override // retrofit2.CallAdapter
|
|
public CompletableFuture<Response<R>> adapt(Call<R> call) {
|
|
CallCancelCompletableFuture callCancelCompletableFuture = new CallCancelCompletableFuture(call);
|
|
call.enqueue(new ResponseCallback(callCancelCompletableFuture));
|
|
return callCancelCompletableFuture;
|
|
}
|
|
}
|
|
|
|
@Override // retrofit2.CallAdapter.Factory
|
|
public CallAdapter<?, ?> get(Type type, Annotation[] annotationArr, Retrofit retrofit) {
|
|
if (CallAdapter.Factory.getRawType(type) != CompletableFuture.class) {
|
|
return null;
|
|
}
|
|
if (!(type instanceof ParameterizedType)) {
|
|
throw new IllegalStateException("CompletableFuture return type must be parameterized as CompletableFuture<Foo> or CompletableFuture<? extends Foo>");
|
|
}
|
|
Type parameterUpperBound = CallAdapter.Factory.getParameterUpperBound(0, (ParameterizedType) type);
|
|
if (CallAdapter.Factory.getRawType(parameterUpperBound) != Response.class) {
|
|
return new BodyCallAdapter(parameterUpperBound);
|
|
}
|
|
if (parameterUpperBound instanceof ParameterizedType) {
|
|
return new ResponseCallAdapter(CallAdapter.Factory.getParameterUpperBound(0, (ParameterizedType) parameterUpperBound));
|
|
}
|
|
throw new IllegalStateException("Response must be parameterized as Response<Foo> or Response<? extends Foo>");
|
|
}
|
|
}
|