Skip to content

Commit cdfe080

Browse files
committed
NAVAND-713: added LegAnnotation.Builder#unrecognizedProperties
1 parent 7ce8c23 commit cdfe080

3 files changed

Lines changed: 40 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Mapbox welcomes participation and contributions from everyone.
44

55
### main
66
- Added `unrecognized()` to `DirectionsRefreshJsonObject` so that unrecognized properties can be received from refresh response.
7+
- Added `LegAnnotation.Builder#unrecognizedProperties`.
78

89
### v6.8.0 - September 29, 2022
910
- Replaced `TurfSimplify#simplify` with `TurfTransformation#simplify`. [#1496](https://github.com/mapbox/mapbox-java/pull/1496)

services-directions-models/src/main/java/com/mapbox/api/directions/v5/models/LegAnnotation.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55
import com.google.auto.value.AutoValue;
66
import com.google.gson.Gson;
77
import com.google.gson.GsonBuilder;
8+
import com.google.gson.JsonElement;
9+
import com.google.gson.JsonPrimitive;
810
import com.google.gson.TypeAdapter;
911
import com.google.gson.annotations.SerializedName;
1012
import com.mapbox.api.directions.v5.DirectionsAdapterFactory;
13+
import com.mapbox.auto.value.gson.SerializableJsonElement;
1114

15+
import java.util.HashMap;
16+
import java.util.LinkedHashMap;
1217
import java.util.List;
18+
import java.util.Map;
1319

1420
/**
1521
* An annotations object that contains additional details about each line segment along the route
@@ -219,6 +225,28 @@ public abstract static class Builder extends DirectionsJsonObject.Builder<Builde
219225
@NonNull
220226
public abstract Builder trafficTendency(@Nullable List<Integer> trafficTendency);
221227

228+
/**
229+
* Use this method to add parameters which are not present in the model yet but are supported
230+
* on the Directions API side in the response.
231+
* Use it for experimental parameters.
232+
*
233+
* @param unrecognizedProperties parameters to add to request
234+
*/
235+
@NonNull
236+
public Builder unrecognizedProperties(
237+
@Nullable Map<String, JsonElement> unrecognizedProperties
238+
) {
239+
if (unrecognizedProperties == null) {
240+
return unrecognized(null);
241+
} else {
242+
Map<String, SerializableJsonElement> map = new HashMap<>();
243+
for (String key : unrecognizedProperties.keySet()) {
244+
map.put(key, new SerializableJsonElement(unrecognizedProperties.get(key)));
245+
}
246+
return unrecognized(map);
247+
}
248+
}
249+
222250
/**
223251
* Build a new {@link LegAnnotation} object.
224252
*

services-directions-models/src/test/java/com/mapbox/api/directions/v5/models/LegAnnotationTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotNull;
55

6+
import com.google.gson.JsonElement;
7+
import com.google.gson.JsonPrimitive;
68
import com.mapbox.core.TestUtils;
79
import org.junit.Test;
810

911
import java.util.ArrayList;
1012
import java.util.Arrays;
13+
import java.util.HashMap;
1114
import java.util.List;
15+
import java.util.Map;
1216

1317
public class LegAnnotationTest extends TestUtils {
1418

@@ -20,12 +24,15 @@ public void sanity() throws Exception {
2024
.distance(new ArrayList<Double>())
2125
.duration(new ArrayList<Double>())
2226
.speed(new ArrayList<Double>())
27+
.unrecognizedProperties(new HashMap<>())
2328
.build();
2429
assertNotNull(annotation);
2530
}
2631

2732
@Test
2833
public void testSerializable() throws Exception {
34+
Map<String, JsonElement> unrecognizedProperties = new HashMap<>();
35+
unrecognizedProperties.put("aaa", new JsonPrimitive("bbb"));
2936
List<Double> distance = new ArrayList<>();
3037
distance.add(20d);
3138
distance.add(40d);
@@ -36,13 +43,16 @@ public void testSerializable() throws Exception {
3643
.distance(distance)
3744
.duration(new ArrayList<Double>())
3845
.speed(new ArrayList<Double>())
46+
.unrecognizedProperties(unrecognizedProperties)
3947
.build();
4048
byte[] serialized = TestUtils.serialize(annotation);
4149
assertEquals(annotation, deserialize(serialized, LegAnnotation.class));
4250
}
4351

4452
@Test
4553
public void testToFromJson1() {
54+
Map<String, JsonElement> unrecognizedProperties = new HashMap<>();
55+
unrecognizedProperties.put("aaa", new JsonPrimitive("bbb"));
4656

4757
List<Double> distanceList = Arrays.asList(
4858
4.294596842089401,
@@ -101,6 +111,7 @@ public void testToFromJson1() {
101111
.duration(durationList)
102112
.speed(speedList)
103113
.congestion(congestionList)
114+
.unrecognizedProperties(unrecognizedProperties)
104115
.build();
105116

106117

0 commit comments

Comments
 (0)