diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-01-24 15:00:14 +0100 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2018-01-24 15:00:14 +0100 |
commit | 0e83ec01aced75179a2703555c11b08beb7ab771 (patch) | |
tree | 41e0a4bd9af584909ae3bfc891c973388c5a50f2 | |
parent | fb5b8d34f20b696319cfc16838243265143ba972 (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-typed-expressions.tar.gz |
[android] - improve typing of expressionsupstream/tvn-typed-expressions
4 files changed, 65 insertions, 29 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java index 4d09fcaac6..45b82f0ba1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java @@ -758,7 +758,7 @@ public class Expression<T> { * @param input expression input * @return expression */ - public static Expression get(@NonNull Expression<String> input) { + public static Expression<?> get(@NonNull Expression<String> input) { return new Expression<>("get", input); } @@ -770,7 +770,7 @@ public class Expression<T> { * @param input string input * @return expression */ - public static Expression get(@NonNull String input) { + public static Expression<?> get(@NonNull String input) { return get(literal(input)); } @@ -782,7 +782,7 @@ public class Expression<T> { * @param object an expression object * @return expression */ - public static Expression get(@NonNull Expression<String> key, @NonNull Expression<Object> object) { + public static Expression<?> get(@NonNull Expression<String> key, @NonNull Expression<Object> object) { return new Expression<>("get", key, object); } @@ -794,7 +794,7 @@ public class Expression<T> { * @param object an expression object * @return expression */ - public static Expression get(@NonNull String key, @NonNull Expression<Object> object) { + public static Expression<?> get(@NonNull String key, @NonNull Expression<Object> object) { return get(literal(key), object); } @@ -1758,4 +1758,37 @@ public class Expression<T> { return output; } + // + // asType + // + + @SuppressWarnings("unchecked") + public Expression<Number> asNumber(){ + return (Expression<Number>) this; + } + + @SuppressWarnings("unchecked") + public Expression<String> asString(){ + return (Expression<String>) this; + } + + @SuppressWarnings("unchecked") + public Expression<Color> asColor(){ + return (Expression<Color>) this; + } + + @SuppressWarnings("unchecked") + public Expression<Boolean> asBoolean(){ + return (Expression<Boolean>) this; + } + + @SuppressWarnings("unchecked") + public Expression<Object> asObject(){ + return (Expression<Object>) this; + } + + @SuppressWarnings("unchecked") + public Expression<Array> asArray(){ + return (Expression<Array>) this; + } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/style/expressions/ExpressionTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/style/expressions/ExpressionTest.java index eb1ce8bfaa..ba3eb4ed51 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/style/expressions/ExpressionTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/style/expressions/ExpressionTest.java @@ -408,14 +408,14 @@ public class ExpressionTest { @Test public void testHasExpression() throws Exception { Object[] expected = new Object[] {"has", new Object[] {"get", "key"}, new Object[] {"properties"}}; - Object[] actual = has(get(literal("key")), properties()).toArray(); + Object[] actual = has(get(literal("key")).asString(), properties()).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @Test public void testHasExpressionLiteral() throws Exception { Object[] expected = new Object[] {"has", new Object[] {"get", "key"}, new Object[] {"properties"}}; - Object[] actual = has(get("key"), properties()).toArray(); + Object[] actual = has(get("key").asString(), properties()).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -521,7 +521,7 @@ public class ExpressionTest { public void testDivisionWithNestedGet() throws Exception { Object nestedGet = new Object[] {"get", "key"}; Object[] expected = new Object[] {"/", 2, nestedGet}; - Object[] actual = division(literal(2), get(literal("key"))).toArray(); + Object[] actual = division(literal(2), get(literal("key")).asNumber()).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -895,7 +895,7 @@ public class ExpressionTest { @Test public void testStepBasicLiteral() throws Exception { Object[] expected = new Object[] {"step", new Object[] {"get", "line-width"}, 11, 0, 111, 1, 1111}; - Object[] actual = step(get("line-width"), literal(11), stop(0, 111), stop(1, 1111)).toArray(); + Object[] actual = step(get("line-width").asNumber(), literal(11), stop(0, 111), stop(1, 1111)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -942,7 +942,7 @@ public class ExpressionTest { Object[] get = new Object[] {"get", "x"}; Object[] expected = new Object[] {"interpolate", exponential, get, 0, 100, 200}; Object[] actual = interpolate(exponential(literal(12)), - get(literal("x")), literal(0), literal(100), literal(200)).toArray(); + get(literal("x")).asNumber(), literal(0), literal(100), literal(200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -951,7 +951,7 @@ public class ExpressionTest { Object[] exponential = new Object[] {"exponential", 12}; Object[] get = new Object[] {"get", "x"}; Object[] expected = new Object[] {"interpolate", exponential, get, 0, 100, 100, 200}; - Object[] actual = interpolate(exponential(12), get("x"), stop(0, 100), stop(100, 200)).toArray(); + Object[] actual = interpolate(exponential(12), get("x").asNumber(), stop(0, 100), stop(100, 200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -961,7 +961,8 @@ public class ExpressionTest { Object[] exponential = new Object[] {"exponential", getX}; Object[] getY = new Object[] {"get", "y"}; Object[] expected = new Object[] {"interpolate", exponential, getY, 0, 100, 100, 200}; - Object[] actual = interpolate(exponential(get("x")), get("y"), stop(0, 100), stop(100, 200)).toArray(); + Object[] actual = interpolate(exponential(get("x").asNumber()), get("y").asNumber(), + stop(0, 100), stop(100, 200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -971,7 +972,7 @@ public class ExpressionTest { Object[] get = new Object[] {"get", "x"}; Object[] expected = new Object[] {"interpolate", cubicBezier, get, 0, 100, 100, 200}; Object[] actual = interpolate(cubicBezier(literal(1), literal(1), literal(1), literal(1)), - get(literal("x")), literal(0), literal(100), literal(100), literal(200)).toArray(); + get(literal("x")).asNumber(), literal(0), literal(100), literal(100), literal(200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -980,7 +981,8 @@ public class ExpressionTest { Object[] cubicBezier = new Object[] {"cubic-bezier", 1, 1, 1, 1}; Object[] get = new Object[] {"get", "x"}; Object[] expected = new Object[] {"interpolate", cubicBezier, get, 0, 100, 100, 200}; - Object[] actual = interpolate(cubicBezier(1, 1, 1, 1), get("x"), stop(0, 100), stop(100, 200)).toArray(); + Object[] actual = interpolate(cubicBezier(1, 1, 1, 1), get("x").asNumber(), + stop(0, 100), stop(100, 200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -991,8 +993,9 @@ public class ExpressionTest { Object[] getZ = new Object[] {"get", "z"}; Object[] cubicBezier = new Object[] {"cubic-bezier", getZ, 1, getY, 1}; Object[] expected = new Object[] {"interpolate", cubicBezier, getX, 0, 100, 200}; - Object[] actual = interpolate(cubicBezier(get(literal("z")), literal(1), - get(literal("y")), literal(1)), get(literal("x")), literal(0), literal(100), literal(200)).toArray(); + Object[] actual = interpolate(cubicBezier(get(literal("z")).asNumber(), literal(1), + get(literal("y")).asNumber(), literal(1)), get(literal("x")).asNumber(), literal(0), + literal(100), literal(200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } @@ -1003,8 +1006,8 @@ public class ExpressionTest { Object[] getZ = new Object[] {"get", "z"}; Object[] cubicBezier = new Object[] {"cubic-bezier", getZ, 1, getY, 1}; Object[] expected = new Object[] {"interpolate", cubicBezier, getX, 0, 100, 100, 200}; - Object[] actual = interpolate(cubicBezier(get("z"), literal(1), get("y"), - literal(1)), get("x"), stop(0, 100), stop(100, 200)).toArray(); + Object[] actual = interpolate(cubicBezier(get("z").asNumber(), literal(1), get("y").asNumber(), + literal(1)), get("x").asNumber(), stop(0, 100), stop(100, 200)).toArray(); assertTrue("expression should match", Arrays.deepEquals(expected, actual)); } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java index cbac62bcc1..7e149df253 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java @@ -210,7 +210,7 @@ public class DataDrivenStyleActivity extends AppCompatActivity { fillColor( interpolate( exponential(0.5f), - get("stroke-width"), + get("stroke-width").asNumber(), stop(1f, color(Color.RED)), stop(5f, color(Color.BLUE)), stop(10f, color(Color.GREEN)) @@ -260,7 +260,7 @@ public class DataDrivenStyleActivity extends AppCompatActivity { layer.setProperties( fillColor( step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.CYAN), stop(1f, color(Color.RED)), stop(2f, color(Color.BLUE)), @@ -282,21 +282,21 @@ public class DataDrivenStyleActivity extends AppCompatActivity { exponential(1f), zoom(), stop(12, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.RED)), stop(2f, color(Color.WHITE)), stop(3f, color(Color.BLUE)) )), stop(15, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.YELLOW)), stop(2f, color(Color.LTGRAY)), stop(3f, color(Color.CYAN)) )), stop(18, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.WHITE)), stop(2f, color(Color.GRAY)), @@ -319,21 +319,21 @@ public class DataDrivenStyleActivity extends AppCompatActivity { linear(), zoom(), stop(12, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.RED)), stop(2f, color(Color.WHITE)), stop(3f, color(Color.BLUE)) )), stop(15, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.YELLOW)), stop(2f, color(Color.LTGRAY)), stop(3f, color(Color.CYAN)) )), stop(18, step( - get("stroke-width"), + get("stroke-width").asNumber(), color(Color.BLACK), stop(1f, color(Color.WHITE)), stop(2f, color(Color.GRAY)), diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java index 1ef59db9b1..4863095fba 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java @@ -248,7 +248,7 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR iconImage(get(literal(FEATURE_ID))), iconAllowOverlap(false), iconSize( - division(get(literal(FEATURE_RANK)), literal(2)) + division(get(literal(FEATURE_RANK)).asNumber(), literal(2)) ), iconAnchor(ICON_ANCHOR_BOTTOM), iconOffset(new Float[] {0.0f, -5.0f}), @@ -257,13 +257,13 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR textField( concat( upcase(literal("a ")), - get(literal(FEATURE_TYPE)), + get(FEATURE_TYPE).asString(), downcase(literal(" IN ")), - get(literal(FEATURE_REGION)) + get(FEATURE_REGION).asString() ) ), textSize( - product(get(literal(FEATURE_RANK)), pi()) + product(get(FEATURE_RANK).asNumber(), pi()) ), textAnchor(TEXT_ANCHOR_TOP) ) |