Use a common utility for turning Google API futures into CompletableFutures

This commit is contained in:
Jon Chambers
2024-04-26 15:27:59 -04:00
committed by GitHub
parent 88e2687e23
commit 9d3e3c7312
3 changed files with 59 additions and 56 deletions

View File

@@ -0,0 +1,28 @@
package org.whispersystems.textsecuregcm.util;
import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutureCallback;
import com.google.api.core.ApiFutures;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
public class GoogleApiUtil {
public static <T> CompletableFuture<T> toCompletableFuture(final ApiFuture<T> apiFuture, final Executor executor) {
final CompletableFuture<T> completableFuture = new CompletableFuture<>();
ApiFutures.addCallback(apiFuture, new ApiFutureCallback<>() {
@Override
public void onSuccess(final T value) {
completableFuture.complete(value);
}
@Override
public void onFailure(final Throwable throwable) {
completableFuture.completeExceptionally(throwable);
}
}, executor);
return completableFuture;
}
}