From 61d8ecefda3a01d0860746af98d632b73c526d98 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Tue, 11 Oct 2016 10:30:38 +0300 Subject: [android] Runtime Style Filter enhancements (#6623) * [android] Additional null check - prevents errors in array conversion * [android] style conversion - delete local refs asap to avoid ref table overflow * [android] Filter - hide concrete implementation classes to avoid confusion --- .../src/main/java/com/mapbox/mapboxsdk/style/layers/Filter.java | 8 ++++---- platform/android/src/style/android_conversion.hpp | 4 +++- platform/android/src/style/value.cpp | 6 +++++- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'platform') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Filter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Filter.java index 4d9791b125..6f881e4960 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Filter.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Filter.java @@ -31,7 +31,7 @@ public class Filter { /** * Represents a {@link Filter} statement. Can be unary (eg `has()`, etc) or take any number of values. */ - public static class SimpleStatement extends Statement { + private static class SimpleStatement extends Statement { private final String key; private final Object[] values; @@ -40,7 +40,7 @@ public class Filter { * @param key the property key * @param values the values to operate on, if any */ - public SimpleStatement(String operator, String key, Object... values) { + SimpleStatement(String operator, String key, Object... values) { super(operator); this.key = key; this.values = values; @@ -63,14 +63,14 @@ public class Filter { /** * Represents a collection of {@link Statement}s with an operator that describes their relationship */ - public static class CompoundStatement extends Statement { + private static class CompoundStatement extends Statement { private final Statement[] statements; /** * @param operator the relationship operator * @param statements the statements to compound */ - public CompoundStatement(String operator, Statement... statements) { + CompoundStatement(String operator, Statement... statements) { super(operator); this.statements = statements; } diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp index 46ee768348..cea7ce6d2a 100644 --- a/platform/android/src/style/android_conversion.hpp +++ b/platform/android/src/style/android_conversion.hpp @@ -75,7 +75,9 @@ inline optional toString(const mbgl::android::Value& value) { } inline optional toValue(const mbgl::android::Value& value) { - if (value.isBool()) { + if (value.isNull()) { + return {}; + } else if (value.isBool()) { return { value.toBool() }; } else if (value.isString()) { return { value.toString() }; diff --git a/platform/android/src/style/value.cpp b/platform/android/src/style/value.cpp index daad3e998d..c03dd39132 100644 --- a/platform/android/src/style/value.cpp +++ b/platform/android/src/style/value.cpp @@ -9,7 +9,11 @@ namespace android { Value::Value(jni::JNIEnv& env, jni::jobject* _value) : jenv(env), value(_value) {} - Value::~Value() {} + Value::~Value() { + if (value) { + jni::DeleteLocalRef(jenv, value); + } + } bool Value::isNull() const { return value == nullptr; -- cgit v1.2.1