diff options
Diffstat (limited to 'platform/android/src/gson/json_element.cpp')
-rw-r--r-- | platform/android/src/gson/json_element.cpp | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/platform/android/src/gson/json_element.cpp b/platform/android/src/gson/json_element.cpp index 28cb368386..7c9a34c03c 100644 --- a/platform/android/src/gson/json_element.cpp +++ b/platform/android/src/gson/json_element.cpp @@ -7,35 +7,30 @@ namespace mbgl { namespace android { namespace gson { -jni::Object<JsonElement> JsonElement::New(jni::JNIEnv& env, const mbgl::Value& value) { - static auto primitive = jni::Class<JsonPrimitive>::Singleton(env); +jni::Local<jni::Object<JsonElement>> JsonElement::New(jni::JNIEnv& env, const mbgl::Value& value) { + static auto& primitive = jni::Class<JsonPrimitive>::Singleton(env); static auto stringConstructor = primitive.GetConstructor<jni::String>(env); static auto numberConstructor = primitive.GetConstructor<jni::Number>(env); static auto booleanConstructor = primitive.GetConstructor<jni::Boolean>(env); return value.match( [&] (const mbgl::NullValue&) { - return jni::Object<JsonElement>(); + return jni::Local<jni::Object<JsonElement>>(); }, [&] (const std::string& value) { - return primitive.New(env, stringConstructor, - *jni::SeizeLocal(env, jni::Make<jni::String>(env, value))); + return primitive.New(env, stringConstructor, jni::Make<jni::String>(env, value)); }, [&] (const double value) { - return primitive.New(env, numberConstructor, - *jni::SeizeLocal(env, jni::Number(jni::Box(env, value)))); + return primitive.New(env, numberConstructor, jni::Box(env, value)); }, [&] (const int64_t value) { - return primitive.New(env, numberConstructor, - *jni::SeizeLocal(env, jni::Number(jni::Box(env, value)))); + return primitive.New(env, numberConstructor, jni::Box(env, value)); }, [&] (const uint64_t value) { - return primitive.New(env, numberConstructor, - *jni::SeizeLocal(env, jni::Number(jni::Box(env, int64_t(value))))); // TODO: should use BigInteger + return primitive.New(env, numberConstructor, jni::Box(env, int64_t(value))); // TODO: should use BigInteger }, [&] (const bool value) { - return primitive.New(env, booleanConstructor, - *jni::SeizeLocal(env, jni::Box(env, value ? jni::jni_true : jni::jni_false))); + return primitive.New(env, booleanConstructor, jni::Box(env, value ? jni::jni_true : jni::jni_false)); }, [&] (const std::vector<mbgl::Value>& values) { return JsonArray::New(env, values); @@ -46,17 +41,17 @@ jni::Object<JsonElement> JsonElement::New(jni::JNIEnv& env, const mbgl::Value& v ); } -mbgl::Value JsonElement::convert(jni::JNIEnv &env, jni::Object<JsonElement> jsonElement) { +mbgl::Value JsonElement::convert(jni::JNIEnv &env, const jni::Object<JsonElement>& jsonElement) { if (!jsonElement) { return mbgl::NullValue(); } - static auto elementClass = jni::Class<JsonElement>::Singleton(env); + static auto& elementClass = jni::Class<JsonElement>::Singleton(env); static auto isJsonObject = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonObject"); static auto isJsonArray = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonArray"); static auto isJsonPrimitive = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonPrimitive"); - static auto primitiveClass = jni::Class<JsonPrimitive>::Singleton(env); + static auto& primitiveClass = jni::Class<JsonPrimitive>::Singleton(env); static auto isBoolean = primitiveClass.GetMethod<jni::jboolean ()>(env, "isBoolean"); static auto isString = primitiveClass.GetMethod<jni::jboolean ()>(env, "isString"); static auto isNumber = primitiveClass.GetMethod<jni::jboolean ()>(env, "isNumber"); @@ -71,7 +66,7 @@ mbgl::Value JsonElement::convert(jni::JNIEnv &env, jni::Object<JsonElement> json } else if (primitive.Call(env, isNumber)) { return primitive.Call(env, getAsDouble); // TODO: how to differentiate types here? } else if (primitive.Call(env, isString)) { - return jni::Make<std::string>(env, *jni::SeizeLocal(env, primitive.Call(env, getAsString))); + return jni::Make<std::string>(env, primitive.Call(env, getAsString)); } else { return mbgl::NullValue(); } |