Skip to content

Commit f32e36e

Browse files
wilhuffa-maurice
authored andcommitted
Convert Query to the new JNI framework
PiperOrigin-RevId: 333157347
1 parent 1f39b71 commit f32e36e

File tree

8 files changed

+291
-312
lines changed

8 files changed

+291
-312
lines changed

firestore/src/android/collection_reference_android.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ Future<DocumentReference> CollectionReferenceInternal::Add(
8888
Local<Object> task = env.Call(obj_, kAdd, map_value.java_object());
8989

9090
auto promise = promises_.MakePromise<DocumentReference>();
91-
promise.RegisterForTask(CollectionReferenceFn::kAdd, task.get());
91+
promise.RegisterForTask(AsyncFn::kAdd, task.get());
9292
return promise.GetFuture();
9393
}
9494

firestore/src/android/collection_reference_android.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@
1010
namespace firebase {
1111
namespace firestore {
1212

13-
// To make things simple, CollectionReferenceInternal uses the Future management
14-
// from its base class, QueryInternal. Each API of CollectionReference that
15-
// returns a Future needs to define an enum value to QueryFn. For example, a
16-
// Future-returning method Foo() relies on the enum value QueryFn::kFoo. The
17-
// enum values are used to identify and manage Future in the Firestore Future
18-
// manager.
19-
using CollectionReferenceFn = QueryFn;
20-
2113
// This is the Android implementation of CollectionReference.
2214
class CollectionReferenceInternal : public QueryInternal {
2315
public:
2416
using ApiType = CollectionReference;
2517
using QueryInternal::QueryInternal;
2618

19+
// To make things simple, CollectionReferenceInternal uses the Future
20+
// management from its base class, QueryInternal. Each API of
21+
// CollectionReference that returns a Future needs to define an enum value in
22+
// QueryFn. For example, a Future-returning method Foo() relies on the enum
23+
// value AsyncFn::kFoo. The enum values are used to identify and manage Future
24+
// in the Firestore Future manager.
25+
using AsyncFn = QueryInternal::AsyncFn;
26+
2727
static void Initialize(jni::Loader& loader);
2828

2929
const std::string& id() const;

firestore/src/android/event_listener_android.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ jobject EventListenerInternal::EventListenerToJavaEventListener(
136136
return result;
137137
}
138138

139+
Local<Object> EventListenerInternal::Create(
140+
Env& env, FirestoreInternal* firestore,
141+
EventListener<QuerySnapshot>* listener) {
142+
return Local<Object>(env.get(), EventListenerToJavaEventListener(
143+
env.get(), firestore, listener));
144+
}
145+
139146
/* static */
140147
jobject EventListenerInternal::EventListenerToJavaEventListener(
141148
JNIEnv* env, FirestoreInternal* firestore,

firestore/src/android/event_listener_android.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ class EventListenerInternal {
3333
JNIEnv* env, FirestoreInternal* firestore,
3434
EventListener<DocumentSnapshot>* listener);
3535

36+
static jni::Local<jni::Object> Create(jni::Env& env,
37+
FirestoreInternal* firestore,
38+
EventListener<QuerySnapshot>* listener);
39+
3640
static jobject EventListenerToJavaEventListener(
3741
JNIEnv* env, FirestoreInternal* firestore,
3842
EventListener<QuerySnapshot>* listener);

firestore/src/android/field_value_android.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ class FieldValueInternal : public Wrapper {
8484

8585
bool operator==(const FieldValueInternal& lhs, const FieldValueInternal& rhs);
8686

87+
inline jobject ToJni(const FieldValueInternal* value) {
88+
return value->java_object();
89+
}
90+
8791
inline jobject ToJni(const FieldValueInternal& value) {
8892
return value.java_object();
8993
}

firestore/src/android/firestore_android.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ bool FirestoreInternal::Initialize(App* app) {
167167
FieldValueInternal::Initialize(app) &&
168168
FirebaseFirestoreExceptionInternal::Initialize(app) &&
169169
ListenerRegistrationInternal::Initialize(app) &&
170-
QueryInternal::Initialize(app) &&
171170
TransactionInternal::Initialize(app) && Wrapper::Initialize(app) &&
172171
// Initialize those embedded Firestore internal classes.
173172
InitializeEmbeddedClasses(app))) {
@@ -197,6 +196,7 @@ bool FirestoreInternal::Initialize(App* app) {
197196
FieldPathConverter::Initialize(loader);
198197
GeoPointInternal::Initialize(loader);
199198
MetadataChangesInternal::Initialize(loader);
199+
QueryInternal::Initialize(loader);
200200
QuerySnapshotInternal::Initialize(loader);
201201
ServerTimestampBehaviorInternal::Initialize(loader);
202202
SetOptionsInternal::Initialize(loader);

0 commit comments

Comments
 (0)