Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[android] - address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
tobrun committed Apr 5, 2018
1 parent 3926351 commit 222a2c0
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 21 deletions.
5 changes: 3 additions & 2 deletions platform/android/src/gson/json_array.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace mbgl {
namespace android {
namespace gson {

jni::Object<JsonArray> JsonArray::New(jni::JNIEnv& env, std::vector<mapbox::geometry::value> values){
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");

Expand All @@ -15,12 +15,13 @@ jni::Object<JsonArray> JsonArray::New(jni::JNIEnv& env, std::vector<mapbox::geom
for (const auto &v : values) {
auto jsonElement = JsonElement::New(env, v);
jsonArray.Call(env, addMethod, jsonElement);
jni::DeleteLocalRef(env, jsonElement);
}

return jsonArray;
}

std::vector<mapbox::geometry::value> JsonArray::convert(jni::JNIEnv &env, jni::Object<JsonArray> jsonArray) {
std::vector<mapbox::geometry::value> JsonArray::convert(jni::JNIEnv &env, const jni::Object<JsonArray> jsonArray) {
std::vector<mapbox::geometry::value> values;

if (jsonArray) {
Expand Down
4 changes: 3 additions & 1 deletion platform/android/src/gson/json_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace android {
namespace gson {


jni::Object<JsonObject> JsonObject::New(jni::JNIEnv& env, std::unordered_map<std::string, mapbox::geometry::value> values){
jni::Object<JsonObject> JsonObject::New(jni::JNIEnv& env, const std::unordered_map<std::string, mapbox::geometry::value> values) {
static auto constructor = JsonObject::javaClass.GetConstructor(env);
static auto addMethod = JsonObject::javaClass.GetMethod<void (jni::String, jni::Object<JsonElement>)>(env, "add");

Expand All @@ -19,6 +19,8 @@ jni::Object<JsonObject> JsonObject::New(jni::JNIEnv& env, std::unordered_map<std
jni::Object<JsonElement> jsonElement = JsonElement::New(env, item.second);
jni::String key = jni::Make<jni::String>(env, item.first);
jsonObject.Call(env, addMethod, key, jsonElement);
jni::DeleteLocalRef(env, jsonElement);
jni::DeleteLocalRef(env, key);
}

return jsonObject;
Expand Down
22 changes: 16 additions & 6 deletions platform/android/src/gson/json_primitive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ class JsonPrimitiveEvaluator {
*/
jni::Object<JsonPrimitive> operator()(const std::string value) const {
static auto constructor = JsonPrimitive::javaClass.GetConstructor<jni::String>(env);
return JsonPrimitive::javaClass.New(env, constructor, jni::Make<jni::String>(env, value));
auto jvalue = jni::Make<jni::String>(env, value);
auto jsonPrimitive = JsonPrimitive::javaClass.New(env, constructor, jvalue);
jni::DeleteLocalRef(env, jvalue);
return jsonPrimitive;
}

/**
Expand All @@ -35,7 +38,9 @@ class JsonPrimitiveEvaluator {
static auto constructor = JsonPrimitive::javaClass.GetConstructor<jni::Object<java::lang::Number>>(env);
auto boxedValue = java::lang::Double::valueOf(env, value);
auto number = jni::Cast(env, boxedValue, java::lang::Number::javaClass);
return JsonPrimitive::javaClass.New(env, constructor, number);
auto jsonPrimitive = JsonPrimitive::javaClass.New(env, constructor, number);
jni::DeleteLocalRef(env, boxedValue);
return jsonPrimitive;
}

/**
Expand All @@ -45,18 +50,21 @@ class JsonPrimitiveEvaluator {
static auto constructor = JsonPrimitive::javaClass.GetConstructor<jni::Object<java::lang::Number>>(env);
auto boxedValue = java::lang::Long::valueOf(env, value);
auto number = jni::Cast(env, boxedValue, java::lang::Number::javaClass);
return JsonPrimitive::javaClass.New(env, constructor, number);
auto jsonPrimitive = JsonPrimitive::javaClass.New(env, constructor, number);
jni::DeleteLocalRef(env, boxedValue);
return jsonPrimitive;
}

/**
* Create a primitive containing a number value with type long
*/
jni::Object<JsonPrimitive> operator()(const uint64_t value) const {
// long conversion
static auto constructor = JsonPrimitive::javaClass.GetConstructor<jni::Object<java::lang::Number>>(env);
auto boxedValue = java::lang::Long::valueOf(env, value);
auto number = jni::Cast(env, boxedValue, java::lang::Number::javaClass);
return JsonPrimitive::javaClass.New(env, constructor, number);
auto jsonPrimitive = JsonPrimitive::javaClass.New(env, constructor, number);
jni::DeleteLocalRef(env, boxedValue);
return jsonPrimitive;
}

/**
Expand All @@ -65,7 +73,9 @@ class JsonPrimitiveEvaluator {
jni::Object<JsonPrimitive> operator()(const bool value) const {
static auto constructor = JsonPrimitive::javaClass.GetConstructor<jni::Object<java::lang::Boolean>>(env);
auto boxedValue = java::lang::Boolean::valueOf(env, value);
return JsonPrimitive::javaClass.New(env, constructor, boxedValue);
auto jsonPrimitive = JsonPrimitive::javaClass.New(env, constructor, boxedValue);
jni::DeleteLocalRef(env, boxedValue);
return jsonPrimitive;
}
};

Expand Down
18 changes: 9 additions & 9 deletions platform/android/src/style/conversion/function.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,32 @@ namespace android {
namespace conversion {

template <class T>
struct Converter<jni::jobject*, mbgl::style::CameraFunction<T>> {
struct Converter<jni::Object<android::gson::JsonElement>, mbgl::style::CameraFunction<T>> {

Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::CameraFunction<T>& value) const {
Result<jni::Object<android::gson::JsonElement>> operator()(jni::JNIEnv& env, const mbgl::style::CameraFunction<T>& value) const {
// Convert expressions
mbgl::Value expressionValue = value.getExpression().serialize();
return gson::JsonElement::New(env, expressionValue);;
return gson::JsonElement::New(env, expressionValue);
}
};

template <class T>
struct Converter<jni::jobject*, mbgl::style::SourceFunction<T>> {
struct Converter<jni::Object<android::gson::JsonElement>, mbgl::style::SourceFunction<T>> {

Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::SourceFunction<T>& value) const {
Result<jni::Object<android::gson::JsonElement>> operator()(jni::JNIEnv& env, const mbgl::style::SourceFunction<T>& value) const {
// Convert expressions
mbgl::Value expressionValue = value.getExpression().serialize();
return gson::JsonElement::New(env, expressionValue);;
return gson::JsonElement::New(env, expressionValue);
}
};

template <class T>
struct Converter<jni::jobject*, mbgl::style::CompositeFunction<T>> {
struct Converter<jni::Object<android::gson::JsonElement>, mbgl::style::CompositeFunction<T>> {

Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::CompositeFunction<T>& value) const {
Result<jni::Object<android::gson::JsonElement>> operator()(jni::JNIEnv& env, const mbgl::style::CompositeFunction<T>& value) const {
// Convert expressions
mbgl::Value expressionValue = value.getExpression().serialize();
return gson::JsonElement::New(env, expressionValue);;
return gson::JsonElement::New(env, expressionValue);
}
};

Expand Down
6 changes: 3 additions & 3 deletions platform/android/src/style/conversion/property_value.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ class PropertyValueEvaluator {
}

jni::jobject* operator()(const mbgl::style::CameraFunction<T> &value) const {
return *convert<jni::jobject*, mbgl::style::CameraFunction<T>>(env, value);
return *convert<jni::Object<android::gson::JsonElement>, mbgl::style::CameraFunction<T>>(env, value);
}

jni::jobject* operator()(const mbgl::style::SourceFunction<T> &value) const {
return *convert<jni::jobject*, mbgl::style::SourceFunction<T>>(env, value);
return *convert<jni::Object<android::gson::JsonElement>, mbgl::style::SourceFunction<T>>(env, value);
}

jni::jobject* operator()(const mbgl::style::CompositeFunction<T> &value) const {
return *convert<jni::jobject*, mbgl::style::CompositeFunction<T>>(env, value);
return *convert<jni::Object<android::gson::JsonElement>, mbgl::style::CompositeFunction<T>>(env, value);
}

private:
Expand Down

0 comments on commit 222a2c0

Please sign in to comment.