Skip to content

Commit adab25c

Browse files
authored
Functions migration to Kotlin (#5351)
done with automated tooling, to investigate the viability of quick migrations pre API changes.
1 parent 456f431 commit adab25c

27 files changed

+1489
-1557
lines changed

firebase-functions/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Unreleased
2-
2+
* [changed] Migrated to Kotlin
33

44
# 21.0.0
55
* [changed] Bump internal dependencies

firebase-functions/api.txt

+79-19
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,44 @@
11
// Signature format: 2.0
22
package com.google.firebase.functions {
33

4-
public class FirebaseFunctions {
5-
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallable(@NonNull String);
6-
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallable(@NonNull String, @NonNull com.google.firebase.functions.HttpsCallableOptions);
7-
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallableFromUrl(@NonNull java.net.URL);
8-
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallableFromUrl(@NonNull java.net.URL, @NonNull com.google.firebase.functions.HttpsCallableOptions);
9-
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp, @NonNull String);
10-
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp);
11-
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull String);
4+
public final class FirebaseFunctions {
5+
method @NonNull public com.google.android.gms.tasks.Task<com.google.firebase.functions.HttpsCallableResult> call(@NonNull String name, @Nullable Object data, @NonNull com.google.firebase.functions.HttpsCallOptions options);
6+
method @NonNull public com.google.android.gms.tasks.Task<com.google.firebase.functions.HttpsCallableResult> call(@NonNull java.net.URL url, @Nullable Object data, @NonNull com.google.firebase.functions.HttpsCallOptions options);
7+
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallable(@NonNull String name);
8+
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallable(@NonNull String name, @NonNull com.google.firebase.functions.HttpsCallableOptions options);
9+
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallableFromUrl(@NonNull java.net.URL url);
10+
method @NonNull public com.google.firebase.functions.HttpsCallableReference getHttpsCallableFromUrl(@NonNull java.net.URL url, @NonNull com.google.firebase.functions.HttpsCallableOptions options);
11+
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp app, @NonNull String regionOrCustomDomain);
12+
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp app);
13+
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull String regionOrCustomDomain);
1214
method @NonNull public static com.google.firebase.functions.FirebaseFunctions getInstance();
13-
method public void useEmulator(@NonNull String, int);
14-
method @Deprecated public void useFunctionsEmulator(@NonNull String);
15+
method @NonNull @VisibleForTesting public java.net.URL getURL(@NonNull String function);
16+
method public void useEmulator(@NonNull String host, int port);
17+
method @Deprecated public void useFunctionsEmulator(@NonNull String origin);
18+
field @NonNull public static final com.google.firebase.functions.FirebaseFunctions.Companion Companion;
1519
}
1620

17-
public class FirebaseFunctionsException extends com.google.firebase.FirebaseException {
21+
public static final class FirebaseFunctions.Companion {
22+
method @NonNull public com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp app, @NonNull String regionOrCustomDomain);
23+
method @NonNull public com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull com.google.firebase.FirebaseApp app);
24+
method @NonNull public com.google.firebase.functions.FirebaseFunctions getInstance(@NonNull String regionOrCustomDomain);
25+
method @NonNull public com.google.firebase.functions.FirebaseFunctions getInstance();
26+
}
27+
28+
public final class FirebaseFunctionsException extends com.google.firebase.FirebaseException {
29+
method @Nullable public static com.google.firebase.functions.FirebaseFunctionsException fromResponse(@NonNull com.google.firebase.functions.FirebaseFunctionsException.Code code, @Nullable String body, @NonNull com.google.firebase.functions.Serializer serializer);
1830
method @NonNull public com.google.firebase.functions.FirebaseFunctionsException.Code getCode();
1931
method @Nullable public Object getDetails();
32+
property @NonNull public final com.google.firebase.functions.FirebaseFunctionsException.Code code;
33+
property @Nullable public final Object details;
34+
field @NonNull public static final com.google.firebase.functions.FirebaseFunctionsException.Companion Companion;
2035
}
2136

2237
public enum FirebaseFunctionsException.Code {
38+
method @NonNull public static final com.google.firebase.functions.FirebaseFunctionsException.Code fromHttpStatus(int status);
39+
method @NonNull public static final com.google.firebase.functions.FirebaseFunctionsException.Code fromValue(int value);
40+
method @NonNull public static com.google.firebase.functions.FirebaseFunctionsException.Code valueOf(@NonNull String name) throws java.lang.IllegalArgumentException;
41+
method @NonNull public static com.google.firebase.functions.FirebaseFunctionsException.Code[] values();
2342
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code ABORTED;
2443
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code ALREADY_EXISTS;
2544
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code CANCELLED;
@@ -37,6 +56,16 @@ package com.google.firebase.functions {
3756
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code UNAVAILABLE;
3857
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code UNIMPLEMENTED;
3958
enum_constant public static final com.google.firebase.functions.FirebaseFunctionsException.Code UNKNOWN;
59+
field @NonNull public static final com.google.firebase.functions.FirebaseFunctionsException.Code.Companion Companion;
60+
}
61+
62+
public static final class FirebaseFunctionsException.Code.Companion {
63+
method @NonNull public com.google.firebase.functions.FirebaseFunctionsException.Code fromHttpStatus(int status);
64+
method @NonNull public com.google.firebase.functions.FirebaseFunctionsException.Code fromValue(int value);
65+
}
66+
67+
public static final class FirebaseFunctionsException.Companion {
68+
method @Nullable public com.google.firebase.functions.FirebaseFunctionsException fromResponse(@NonNull com.google.firebase.functions.FirebaseFunctionsException.Code code, @Nullable String body, @NonNull com.google.firebase.functions.Serializer serializer);
4069
}
4170

4271
public final class FunctionsKt {
@@ -48,29 +77,60 @@ package com.google.firebase.functions {
4877
method @NonNull public static com.google.firebase.functions.HttpsCallableReference getHttpsCallableFromUrl(@NonNull com.google.firebase.functions.FirebaseFunctions, @NonNull java.net.URL url, @NonNull kotlin.jvm.functions.Function1<? super com.google.firebase.functions.HttpsCallableOptions.Builder,kotlin.Unit> init);
4978
}
5079

51-
public class HttpsCallableOptions {
80+
public final class HttpsCallOptions {
81+
ctor public HttpsCallOptions(@NonNull com.google.firebase.functions.HttpsCallableOptions publicCallableOptions);
82+
ctor public HttpsCallOptions();
83+
method @NonNull public okhttp3.OkHttpClient apply(@NonNull okhttp3.OkHttpClient client);
84+
method public boolean getLimitedUseAppCheckTokens();
85+
method public long getTimeout();
86+
method public void setTimeout(long timeout, @NonNull java.util.concurrent.TimeUnit units);
87+
field @NonNull public static final com.google.firebase.functions.HttpsCallOptions.Companion Companion;
88+
field public final boolean limitedUseAppCheckTokens;
89+
}
90+
91+
public static final class HttpsCallOptions.Companion {
92+
}
93+
94+
public final class HttpsCallableOptions {
5295
method public boolean getLimitedUseAppCheckTokens();
96+
field public final boolean limitedUseAppCheckTokens;
5397
}
5498

55-
public static class HttpsCallableOptions.Builder {
99+
public static final class HttpsCallableOptions.Builder {
56100
ctor public HttpsCallableOptions.Builder();
57101
method @NonNull public com.google.firebase.functions.HttpsCallableOptions build();
58102
method public boolean getLimitedUseAppCheckTokens();
59-
method @NonNull public com.google.firebase.functions.HttpsCallableOptions.Builder setLimitedUseAppCheckTokens(boolean);
103+
method @NonNull public com.google.firebase.functions.HttpsCallableOptions.Builder setLimitedUseAppCheckTokens(boolean limitedUse);
104+
field public boolean limitedUseAppCheckTokens;
60105
}
61106

62-
public class HttpsCallableReference {
63-
method @NonNull public com.google.android.gms.tasks.Task<com.google.firebase.functions.HttpsCallableResult> call(@Nullable Object);
107+
public final class HttpsCallableReference {
108+
method @NonNull public com.google.android.gms.tasks.Task<com.google.firebase.functions.HttpsCallableResult> call(@Nullable Object data);
64109
method @NonNull public com.google.android.gms.tasks.Task<com.google.firebase.functions.HttpsCallableResult> call();
110+
method @NonNull public com.google.firebase.functions.HttpsCallOptions getOptions();
65111
method public long getTimeout();
66-
method public void setTimeout(long, @NonNull java.util.concurrent.TimeUnit);
67-
method @NonNull public com.google.firebase.functions.HttpsCallableReference withTimeout(long, @NonNull java.util.concurrent.TimeUnit);
112+
method public void setTimeout(long timeout, @NonNull java.util.concurrent.TimeUnit units);
113+
method @NonNull public com.google.firebase.functions.HttpsCallableReference withTimeout(long timeout, @NonNull java.util.concurrent.TimeUnit units);
114+
property @NonNull public final com.google.firebase.functions.HttpsCallOptions options;
115+
property public final long timeout;
68116
}
69117

70-
public class HttpsCallableResult {
118+
public final class HttpsCallableResult {
71119
method @Nullable public Object getData();
72120
}
73121

122+
public final class Serializer {
123+
ctor public Serializer();
124+
method @Nullable public Object decode(@NonNull Object obj);
125+
method @NonNull public Object encode(@Nullable Object obj);
126+
field @NonNull public static final com.google.firebase.functions.Serializer.Companion Companion;
127+
field @NonNull @VisibleForTesting public static final String LONG_TYPE = "type.googleapis.com/google.protobuf.Int64Value";
128+
field @NonNull @VisibleForTesting public static final String UNSIGNED_LONG_TYPE = "type.googleapis.com/google.protobuf.UInt64Value";
129+
}
130+
131+
public static final class Serializer.Companion {
132+
}
133+
74134
}
75135

76136
package com.google.firebase.functions.ktx {

firebase-functions/firebase-functions.gradle.kts

+23-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ plugins {
1717
id("kotlin-android")
1818
id("firebase-vendor")
1919
id("copy-google-services")
20+
kotlin("kapt")
2021
}
2122

2223
firebaseLibrary {
@@ -58,6 +59,23 @@ dependencies {
5859
javadocClasspath("org.codehaus.mojo:animal-sniffer-annotations:1.21")
5960
javadocClasspath(libs.autovalue.annotations)
6061
javadocClasspath(libs.findbugs.jsr305)
62+
implementation("com.google.firebase:firebase-annotations:16.2.0")
63+
implementation("com.google.firebase:firebase-common:20.3.1")
64+
implementation("com.google.firebase:firebase-components:17.1.0")
65+
implementation(project(":appcheck:firebase-appcheck-interop"))
66+
implementation(libs.kotlin.stdlib)
67+
implementation(libs.playservices.base)
68+
implementation(libs.playservices.basement)
69+
implementation(libs.playservices.tasks)
70+
implementation("com.google.firebase:firebase-iid:21.1.0") {
71+
exclude(group = "com.google.firebase", module = "firebase-common")
72+
exclude(group = "com.google.firebase", module = "firebase-components")
73+
}
74+
implementation("com.google.firebase:firebase-auth-interop:18.0.0") {
75+
exclude(group = "com.google.firebase", module = "firebase-common")
76+
}
77+
implementation("com.google.firebase:firebase-iid-interop:17.1.0")
78+
implementation(libs.okhttp)
6179

6280
api("com.google.firebase:firebase-appcheck-interop:17.1.0")
6381
api("com.google.firebase:firebase-common:21.0.0")
@@ -95,10 +113,12 @@ dependencies {
95113
}
96114

97115
androidTestImplementation(project(":integ-testing"))
98-
androidTestImplementation(libs.androidx.test.junit)
99-
androidTestImplementation(libs.androidx.test.runner)
100116
androidTestImplementation(libs.junit)
117+
androidTestImplementation(libs.truth)
118+
androidTestImplementation(libs.androidx.test.runner)
119+
androidTestImplementation(libs.androidx.test.junit)
101120
androidTestImplementation(libs.mockito.core)
102121
androidTestImplementation(libs.mockito.dexmaker)
103-
androidTestImplementation(libs.truth)
122+
kapt("com.google.dagger:dagger-android-processor:2.43.2")
123+
kapt("com.google.dagger:dagger-compiler:2.43.2")
104124
}

firebase-functions/gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version=21.0.1
1+
version=21.1.0
22
latestReleasedVersion=21.0.0
33
android.enableUnitTestBinaryResources=true

firebase-functions/src/main/java/com/google/firebase/functions/ContextProvider.java firebase-functions/src/main/java/com/google/firebase/functions/ContextProvider.kt

+4-5
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
14+
package com.google.firebase.functions
1415

15-
package com.google.firebase.functions;
16-
17-
import com.google.android.gms.tasks.Task;
16+
import com.google.android.gms.tasks.Task
1817

1918
/** The interface for getting metadata about the client. This is an interface for easier testing. */
20-
interface ContextProvider {
21-
Task<HttpsCallableContext> getContext(boolean getLimitedUseAppCheckToken);
19+
internal interface ContextProvider {
20+
fun getContext(getLimitedUseAppCheckToken: Boolean): Task<HttpsCallableContext?>?
2221
}

firebase-functions/src/main/java/com/google/firebase/functions/FirebaseContextProvider.java

-123
This file was deleted.

0 commit comments

Comments
 (0)