diff --git a/firebase-firestore/CHANGELOG.md b/firebase-firestore/CHANGELOG.md index 29416bcf9a4..a02bc7efccf 100644 --- a/firebase-firestore/CHANGELOG.md +++ b/firebase-firestore/CHANGELOG.md @@ -1,5 +1,5 @@ # Unreleased - +* [fixed] Remove copy of Guava Function interface, and instead use Guava directly. [#6983](//github.com/firebase/firebase-android-sdk/pull/6983) # 25.1.4 * [fixed] Fixed the `null` value handling in `whereNotEqualTo` and `whereNotIn` filters. diff --git a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/AccessHelper.java b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/AccessHelper.java index d0800b5ce4a..4a44b32738e 100644 --- a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/AccessHelper.java +++ b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/AccessHelper.java @@ -15,13 +15,13 @@ package com.google.firebase.firestore; import android.content.Context; +import com.google.common.base.Function; import com.google.firebase.FirebaseApp; import com.google.firebase.firestore.auth.CredentialsProvider; import com.google.firebase.firestore.auth.User; import com.google.firebase.firestore.core.ComponentProvider; import com.google.firebase.firestore.model.DatabaseId; import com.google.firebase.firestore.util.AsyncQueue; -import com.google.firebase.firestore.util.Function; /** Gives access to package private methods in integration tests. */ public final class AccessHelper { diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/FirebaseFirestore.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/FirebaseFirestore.java index c1218829b8a..aef1f2c0347 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/FirebaseFirestore.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/FirebaseFirestore.java @@ -27,6 +27,7 @@ import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; +import com.google.common.base.Function; import com.google.firebase.FirebaseApp; import com.google.firebase.annotations.PreviewApi; import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider; @@ -51,7 +52,6 @@ import com.google.firebase.firestore.util.AsyncQueue; import com.google.firebase.firestore.util.ByteBufferInputStream; import com.google.firebase.firestore.util.Executors; -import com.google.firebase.firestore.util.Function; import com.google.firebase.firestore.util.Logger; import com.google.firebase.firestore.util.Logger.Level; import com.google.firebase.firestore.util.Preconditions; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/FirestoreClientProvider.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/FirestoreClientProvider.java index bebd57e3160..5b87aafdc09 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/FirestoreClientProvider.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/FirestoreClientProvider.java @@ -18,9 +18,9 @@ import androidx.annotation.VisibleForTesting; import androidx.core.util.Consumer; import com.google.android.gms.tasks.Task; +import com.google.common.base.Function; import com.google.firebase.firestore.core.FirestoreClient; import com.google.firebase.firestore.util.AsyncQueue; -import com.google.firebase.firestore.util.Function; import java.util.concurrent.Executor; /** diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/CompositeFilter.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/CompositeFilter.java index 26654f7a1ba..33abfb5f1b4 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/CompositeFilter.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/CompositeFilter.java @@ -16,8 +16,8 @@ import android.text.TextUtils; import androidx.annotation.Nullable; +import com.google.common.base.Function; import com.google.firebase.firestore.model.Document; -import com.google.firebase.firestore.util.Function; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/FirestoreClient.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/FirestoreClient.java index 6e2d9b87b84..b9feb43e515 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/FirestoreClient.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/FirestoreClient.java @@ -22,6 +22,7 @@ import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; +import com.google.common.base.Function; import com.google.firebase.firestore.AggregateField; import com.google.firebase.firestore.EventListener; import com.google.firebase.firestore.FirebaseFirestoreException; @@ -47,7 +48,6 @@ import com.google.firebase.firestore.remote.RemoteSerializer; import com.google.firebase.firestore.remote.RemoteStore; import com.google.firebase.firestore.util.AsyncQueue; -import com.google.firebase.firestore.util.Function; import com.google.firebase.firestore.util.Logger; import com.google.firestore.v1.Value; import java.io.InputStream; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java index e9bb7bafea6..8b1c895ab0d 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java @@ -21,6 +21,7 @@ import androidx.annotation.VisibleForTesting; import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; +import com.google.common.base.Function; import com.google.firebase.database.collection.ImmutableSortedMap; import com.google.firebase.database.collection.ImmutableSortedSet; import com.google.firebase.firestore.AggregateField; @@ -52,7 +53,6 @@ import com.google.firebase.firestore.remote.RemoteStore; import com.google.firebase.firestore.remote.TargetChange; import com.google.firebase.firestore.util.AsyncQueue; -import com.google.firebase.firestore.util.Function; import com.google.firebase.firestore.util.Logger; import com.google.firebase.firestore.util.Util; import com.google.firestore.v1.Value; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/TransactionRunner.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/TransactionRunner.java index 28db0e6902e..fa15dc62496 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/TransactionRunner.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/TransactionRunner.java @@ -17,6 +17,7 @@ import androidx.annotation.NonNull; import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; +import com.google.common.base.Function; import com.google.firebase.firestore.FirebaseFirestoreException; import com.google.firebase.firestore.TransactionOptions; import com.google.firebase.firestore.remote.Datastore; @@ -24,7 +25,6 @@ import com.google.firebase.firestore.util.AsyncQueue; import com.google.firebase.firestore.util.AsyncQueue.TimerId; import com.google.firebase.firestore.util.ExponentialBackoff; -import com.google.firebase.firestore.util.Function; /** TransactionRunner encapsulates the logic needed to run and retry transactions with backoff. */ public class TransactionRunner { diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLitePersistence.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLitePersistence.java index b9c89d3cb8b..eab22c985d3 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLitePersistence.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLitePersistence.java @@ -30,13 +30,13 @@ import android.database.sqlite.SQLiteTransactionListener; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import com.google.common.base.Function; import com.google.firebase.firestore.FirebaseFirestoreException; import com.google.firebase.firestore.FirebaseFirestoreException.Code; import com.google.firebase.firestore.auth.User; import com.google.firebase.firestore.model.DatabaseId; import com.google.firebase.firestore.util.Consumer; import com.google.firebase.firestore.util.FileUtil; -import com.google.firebase.firestore.util.Function; import com.google.firebase.firestore.util.Logger; import com.google.firebase.firestore.util.Supplier; import java.io.File; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLiteRemoteDocumentCache.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLiteRemoteDocumentCache.java index b26f9601a81..5d7c48be64b 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLiteRemoteDocumentCache.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLiteRemoteDocumentCache.java @@ -22,6 +22,7 @@ import android.database.Cursor; import androidx.annotation.VisibleForTesting; +import com.google.common.base.Function; import com.google.firebase.Timestamp; import com.google.firebase.database.collection.ImmutableSortedMap; import com.google.firebase.firestore.core.Query; @@ -33,7 +34,6 @@ import com.google.firebase.firestore.model.SnapshotVersion; import com.google.firebase.firestore.util.BackgroundQueue; import com.google.firebase.firestore.util.Executors; -import com.google.firebase.firestore.util.Function; import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.MessageLite; import java.util.ArrayList; diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/util/Function.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/util/Function.java deleted file mode 100644 index 1f73d37cead..00000000000 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/util/Function.java +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.firebase.firestore.util; - -import javax.annotation.Nullable; - -// This is a copy of -// https://github.com/google/guava/blob/master/guava/src/com/google/common/base/Function.java. -/** - * Determines an output value based on an input value; a pre-Java-8 version of {@link - * java.util.function.Function java.util.function.Function}. - * - *

See the Guava User Guide article on the use of {@code Function}. - * - *

For Java 8+ users

- * - *

This interface is now a legacy type. Use {@code java.util.function.Function} (or the - * appropriate primitive specialization such as {@code ToIntFunction}) instead whenever possible. - * Otherwise, at least reduce explicit dependencies on this type by using lambda expressions - * or method references instead of classes, leaving your code easier to migrate in the future. - * - *

To use an existing function (say, named {@code function}) in a context where the other - * type of function is expected, use the method reference {@code function::apply}. A future - * version of {@code com.google.firebase.firestore.util.Function} will be made to extend - * {@code java.util.function.Function}, making conversion code necessary only in one direction. At - * that time, this interface will be officially discouraged. - * - * @author Kevin Bourrillion - * @since 2.0 - */ -public interface Function { - /** - * Returns the result of applying this function to {@code input}. This method is generally - * expected, but not absolutely required, to have the following properties: - * - *

- * - * @throws NullPointerException if {@code input} is null and this function does not accept null - * arguments - */ - @Nullable - T apply(@Nullable F input); - - /** - * May return {@code true} if {@code object} is a {@code Function} that behaves identically - * to this function. - * - *

Warning: do not depend on the behavior of this method. - * - *

Historically, {@code Function} instances in this library have implemented this method to - * recognize certain cases where distinct {@code Function} instances would in fact behave - * identically. However, as code migrates to {@code java.util.function}, that behavior will - * disappear. It is best not to depend on it. - */ - @Override - boolean equals(@Nullable Object object); -}