Update Contacts for guava 27.1
Futures.transform now requires an Executor argument.
Futures.withFallback has been replaced with Futures.catchingAsync.
Bug: 130306229
Test: m checkbuild
Change-Id: I5ea7810446ed23b133e6dfb0eb06e6e10125db53
diff --git a/src/com/android/contacts/SimImportFragment.java b/src/com/android/contacts/SimImportFragment.java
index 6042939..cee1b1a 100644
--- a/src/com/android/contacts/SimImportFragment.java
+++ b/src/com/android/contacts/SimImportFragment.java
@@ -55,6 +55,7 @@
import com.google.common.base.Function;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.Arrays;
@@ -477,7 +478,7 @@
simLoadResult.accounts = accounts;
return simLoadResult;
}
- });
+ }, MoreExecutors.directExecutor());
}
private LoaderResult loadFromSim() {
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
index f67f074..34f9cb2 100644
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ b/src/com/android/contacts/model/AccountTypeManager.java
@@ -59,6 +59,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.Collections;
@@ -503,7 +504,8 @@
private synchronized void reloadAccountTypes() {
loadAccountTypes();
Futures.addCallback(
- Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+ Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+ MoreExecutors.directExecutor()),
newAccountsUpdatedCallback(mAccountManagerAccounts),
mMainThreadExecutor);
}
@@ -534,7 +536,8 @@
final ListenableFuture<List<List<AccountWithDataSet>>> all =
Futures.nonCancellationPropagating(
Futures.successfulAsList(
- Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+ Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+ MoreExecutors.directExecutor()),
mLocalAccountsFuture));
return Futures.transform(all, new Function<List<List<AccountWithDataSet>>,
@@ -560,7 +563,7 @@
AccountInfo.sortAccounts(null, result);
return result;
}
- });
+ }, MoreExecutors.directExecutor());
}
@Override
diff --git a/src/com/android/contacts/util/concurrent/FuturesUtil.java b/src/com/android/contacts/util/concurrent/FuturesUtil.java
index 113af93..ba72446 100644
--- a/src/com/android/contacts/util/concurrent/FuturesUtil.java
+++ b/src/com/android/contacts/util/concurrent/FuturesUtil.java
@@ -3,9 +3,10 @@
import android.os.Handler;
-import com.google.common.util.concurrent.FutureFallback;
+import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ScheduledExecutorService;
@@ -46,14 +47,14 @@
}
}, time, unit);
- return Futures.withFallback(future, new FutureFallback<V>() {
+ return Futures.catchingAsync(future, Throwable.class, new AsyncFunction<Throwable, V>() {
@Override
- public ListenableFuture<V> create(Throwable t) throws Exception {
+ public ListenableFuture<V> apply(Throwable t) throws Exception {
if ((t instanceof CancellationException) && didTimeout.get()) {
return Futures.immediateFailedFuture(new TimeoutException("Timeout expired"));
}
return Futures.immediateFailedFuture(t);
}
- });
+ }, MoreExecutors.directExecutor());
}
}