diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-08-17 13:43:07 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-09-07 09:44:12 -0700 |
commit | 53c3c327f0ebea276d977f58a59cdb9449165518 (patch) | |
tree | 1315a80a1c24f24dd1cbd4e00cf85083be16ce45 /platform/android/src/gson/json_array.cpp | |
parent | 6806ba5b52129050c0944bd7c8b1fe285baeeddc (diff) | |
download | qtlocation-mapboxgl-53c3c327f0ebea276d977f58a59cdb9449165518.tar.gz |
[android] Upgrade to latest jni.hpp
Diffstat (limited to 'platform/android/src/gson/json_array.cpp')
-rw-r--r-- | platform/android/src/gson/json_array.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/platform/android/src/gson/json_array.cpp b/platform/android/src/gson/json_array.cpp index e8852d77e9..333b402aa0 100644 --- a/platform/android/src/gson/json_array.cpp +++ b/platform/android/src/gson/json_array.cpp @@ -7,15 +7,14 @@ namespace android { namespace gson { jni::Object<JsonArray> JsonArray::New(jni::JNIEnv& env, const std::vector<mapbox::geometry::value>& values){ - static auto constructor = JsonArray::javaClass.GetConstructor(env); - static auto addMethod = JsonArray::javaClass.GetMethod<void (jni::Object<JsonElement>)>(env, "add"); + static auto javaClass = jni::Class<JsonArray>::Singleton(env); + static auto constructor = javaClass.GetConstructor(env); + static auto addMethod = javaClass.GetMethod<void (jni::Object<JsonElement>)>(env, "add"); - auto jsonArray = JsonArray::javaClass.New(env, constructor); + auto jsonArray = javaClass.New(env, constructor); for (const auto &v : values) { - auto jsonElement = JsonElement::New(env, v); - jsonArray.Call(env, addMethod, jsonElement); - jni::DeleteLocalRef(env, jsonElement); + jsonArray.Call(env, addMethod, *jni::SeizeLocal(env, JsonElement::New(env, v))); } return jsonArray; @@ -25,18 +24,18 @@ std::vector<mapbox::geometry::value> JsonArray::convert(jni::JNIEnv& env, const std::vector<mapbox::geometry::value> values; if (jsonArray) { - static auto getMethod = JsonArray::javaClass.GetMethod<jni::Object<JsonElement> (jni::jint)>(env, "get"); - static auto sizeMethod = JsonArray::javaClass.GetMethod<jni::jint ()>(env, "size"); + static auto javaClass = jni::Class<JsonArray>::Singleton(env); + static auto getMethod = javaClass.GetMethod<jni::Object<JsonElement> (jni::jint)>(env, "get"); + static auto sizeMethod = javaClass.GetMethod<jni::jint ()>(env, "size"); int size = jsonArray.Call(env, sizeMethod); values.reserve(uint(size)); for (int i = 0; i < size; i++) { - auto entry = jsonArray.Call(env, getMethod, i); - if (entry) { - values.push_back(JsonElement::convert(env, entry)); + auto entry = jni::SeizeLocal(env, jsonArray.Call(env, getMethod, i)); + if (*entry) { + values.push_back(JsonElement::convert(env, *entry)); } - jni::DeleteLocalRef(env, entry); } } @@ -44,12 +43,9 @@ std::vector<mapbox::geometry::value> JsonArray::convert(jni::JNIEnv& env, const } void JsonArray::registerNative(jni::JNIEnv& env) { - // Lookup the class - javaClass = *jni::Class<JsonArray>::Find(env).NewGlobalRef(env).release(); + jni::Class<JsonArray>::Singleton(env); } -jni::Class<JsonArray> JsonArray::javaClass; - } // namespace gson } // namespace android } // namespace mbgl
\ No newline at end of file |