Skip to content

Commit 65621ac

Browse files
sumkitfacebook-github-bot
authored andcommitted
Back out "Use fbjni JArrayList and JHashMap in Hermes"
Summary: Original commit changeset: c512f7c8a0e5 Reviewed By: JoshuaGross Differential Revision: D29273977 fbshipit-source-id: 2d43430c6fad321fa2b69476962b86ac0a2bacea
1 parent 3b3c78c commit 65621ac

1 file changed

Lines changed: 44 additions & 2 deletions

File tree

lib/Platform/Intl/PlatformIntlAndroid.cpp

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,47 @@ namespace platform_intl {
2424

2525
namespace {
2626

27+
template <typename E = jobject>
28+
struct JArrayList : jni::JavaClass<JArrayList<E>, jni::JList<E>> {
29+
constexpr static auto kJavaDescriptor = "Ljava/util/ArrayList;";
30+
31+
using Super = jni::JavaClass<JArrayList<E>, jni::JList<E>>;
32+
33+
static jni::local_ref<JArrayList<E>> create() {
34+
return Super::newInstance();
35+
}
36+
37+
static jni::local_ref<JArrayList<E>> create(int initialCapacity) {
38+
return Super::newInstance(initialCapacity);
39+
}
40+
41+
bool add(jni::alias_ref<jobject> elem) {
42+
static auto addMethod =
43+
Super::javaClassStatic()
44+
->template getMethod<jboolean(jni::alias_ref<jobject>)>("add");
45+
return addMethod(Super::self(), elem);
46+
}
47+
};
48+
49+
template <typename K = jobject, typename V = jobject>
50+
struct JHashMap : jni::JavaClass<JHashMap<K, V>, jni::JMap<K, V>> {
51+
constexpr static auto kJavaDescriptor = "Ljava/util/HashMap;";
52+
53+
using Super = jni::JavaClass<JHashMap<K, V>, jni::JMap<K, V>>;
54+
55+
static jni::local_ref<JHashMap<K, V>> create() {
56+
return Super::newInstance();
57+
}
58+
59+
void put(jni::alias_ref<jobject> key, jni::alias_ref<jobject> val) {
60+
static auto putMethod =
61+
Super::javaClassStatic()
62+
->template getMethod<jni::alias_ref<jobject>(
63+
jni::alias_ref<jobject>, jni::alias_ref<jobject>)>("put");
64+
putMethod(Super::self(), key, val);
65+
}
66+
};
67+
2768
using JLocalesList = jni::JList<jni::JString>;
2869
using JOptionsMap = jni::JMap<jni::JString, jni::JObject>;
2970
using JPartMap = jni::JMap<jni::JString, jni::JString>;
@@ -35,15 +76,16 @@ jni::local_ref<jstring> stringToJava(std::u16string str) {
3576

3677
jni::local_ref<JLocalesList> localesToJava(
3778
std::vector<std::u16string> locales) {
38-
auto ret = jni::JArrayList<jni::JString>::create(locales.size());
79+
jni::local_ref<JArrayList<jni::JString>> ret =
80+
JArrayList<jni::JString>::create(locales.size());
3981
for (const auto &locale : locales) {
4082
ret->add(jni::make_jstring(locale));
4183
}
4284
return ret;
4385
}
4486

4587
jni::local_ref<JOptionsMap> optionsToJava(const Options &options) {
46-
auto ret = jni::JHashMap<jni::JString, jni::JObject>::create();
88+
auto ret = JHashMap<jni::JString, jni::JObject>::create();
4789
for (const auto &kv : options) {
4890
jni::local_ref<jni::JObject> jvalue;
4991
if (kv.second.isBool()) {

0 commit comments

Comments
 (0)