Skip to content

Commit 402d63e

Browse files
authored
Route options should be serialized/deserialized (#895)
using the matching names from backend api
1 parent 0890444 commit 402d63e

2 files changed

Lines changed: 99 additions & 0 deletions

File tree

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.google.gson.Gson;
88
import com.google.gson.GsonBuilder;
99
import com.google.gson.TypeAdapter;
10+
import com.google.gson.annotations.SerializedName;
1011
import com.mapbox.api.directions.v5.DirectionsAdapterFactory;
1112
import com.mapbox.api.directions.v5.DirectionsCriteria;
1213
import com.mapbox.api.directions.v5.MapboxDirections;
@@ -134,6 +135,7 @@ public static Builder builder() {
134135
* not during the initial request
135136
* @since 3.0.0
136137
*/
138+
@SerializedName("continue_straight")
137139
@Nullable
138140
public abstract Boolean continueStraight();
139141

@@ -145,6 +147,7 @@ public static Builder builder() {
145147
* during the initial route request
146148
* @since 3.1.0
147149
*/
150+
@SerializedName("roundabout_exits")
148151
@Nullable
149152
public abstract Boolean roundaboutExits();
150153

@@ -201,6 +204,7 @@ public static Builder builder() {
201204
* @return true if the original request included voice instructions
202205
* @since 3.0.0
203206
*/
207+
@SerializedName("voice_instructions")
204208
@Nullable
205209
public abstract Boolean voiceInstructions();
206210

@@ -210,6 +214,7 @@ public static Builder builder() {
210214
* @return true if the original request included banner instructions
211215
* @since 3.0.0
212216
*/
217+
@SerializedName("banner_instructions")
213218
@Nullable
214219
public abstract Boolean bannerInstructions();
215220

@@ -219,6 +224,7 @@ public static Builder builder() {
219224
* @return a string matching either imperial or metric
220225
* @since 3.0.0
221226
*/
227+
@SerializedName("voice_units")
222228
@Nullable
223229
public abstract String voiceUnits();
224230

@@ -228,6 +234,7 @@ public static Builder builder() {
228234
* @return a string representing the Mapbox access token
229235
* @since 3.0.0
230236
*/
237+
@SerializedName("access_token")
231238
@NonNull
232239
public abstract String accessToken();
233240

@@ -239,6 +246,7 @@ public static Builder builder() {
239246
* @return a string containing the request UUID
240247
* @since 3.0.0
241248
*/
249+
@SerializedName("uuid")
242250
@NonNull
243251
public abstract String requestUuid();
244252

@@ -267,6 +275,7 @@ public static Builder builder() {
267275
* @return a string representing names for each waypoint
268276
* @since 3.3.0
269277
*/
278+
@SerializedName("waypoint_names")
270279
@Nullable
271280
public abstract String waypointNames();
272281

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

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import java.io.IOException;
1616
import java.util.ArrayList;
17+
import java.util.Arrays;
1718
import java.util.List;
1819
import java.util.Locale;
1920

@@ -214,4 +215,93 @@ public void toJson_fromJson() throws Exception {
214215

215216
assertEquals(routeOptions, routeOptionsFromJson);
216217
}
218+
219+
@Test
220+
public void fromJson() {
221+
String jsonString = "{" +
222+
"\"profile\": \"auto\"," +
223+
"\"user\": \"mapbox\"," +
224+
"\"baseUrl\": \"https://api.mapbox.com\"," +
225+
"\"coordinates\": [[-3.707788,40.395039],[-3.712179,40.401819]]," +
226+
"\"access_token\": \"ACCESS_TOKEN\"," +
227+
"\"geometries\": \"polyline6\"," +
228+
"\"overview\": \"full\"," +
229+
"\"steps\": true," +
230+
"\"bearings\": \";\"," +
231+
"\"continue_straight\": true," +
232+
"\"annotations\": \"congestion,distance\"," +
233+
"\"language\": \"en\"," +
234+
"\"roundabout_exits\": true," +
235+
"\"voice_instructions\": true," +
236+
"\"banner_instructions\": true," +
237+
"\"voice_units\": \"imperial\"," +
238+
"\"uuid\": \"uuid1\"" +
239+
"}";
240+
241+
RouteOptions routeOptions = RouteOptions.fromJson(jsonString);
242+
243+
assertEquals("auto", routeOptions.profile());
244+
assertEquals("mapbox", routeOptions.user());
245+
assertEquals("https://api.mapbox.com", routeOptions.baseUrl());
246+
assertEquals(2, routeOptions.coordinates().size());
247+
assertEquals("ACCESS_TOKEN", routeOptions.accessToken());
248+
assertEquals("polyline6", routeOptions.geometries());
249+
assertEquals("full", routeOptions.overview());
250+
assertEquals(true, routeOptions.steps());
251+
assertEquals(";", routeOptions.bearings());
252+
assertEquals(true, routeOptions.continueStraight());
253+
assertEquals("congestion,distance", routeOptions.annotations());
254+
assertEquals("en", routeOptions.language());
255+
assertEquals(true, routeOptions.roundaboutExits());
256+
assertEquals(true, routeOptions.voiceInstructions());
257+
assertEquals(true, routeOptions.bannerInstructions());
258+
assertEquals("imperial", routeOptions.voiceUnits());
259+
assertEquals("uuid1", routeOptions.requestUuid());
260+
}
261+
262+
@Test
263+
public void toJson() {
264+
RouteOptions routeOptions = RouteOptions.builder()
265+
.profile("auto")
266+
.user("mapbox")
267+
.coordinates(Arrays.asList(Point.fromLngLat(-3.707788, 40.395039),
268+
Point.fromLngLat(-3.712179, 40.401819)))
269+
.accessToken("ACCESS_TOKEN")
270+
.baseUrl("https://api.mapbox.com")
271+
.geometries("polyline6")
272+
.overview("full")
273+
.steps(true)
274+
.bearings(";")
275+
.continueStraight(true)
276+
.annotations("congestion,distance")
277+
.language("en")
278+
.roundaboutExits(true)
279+
.voiceInstructions(true)
280+
.bannerInstructions(true)
281+
.voiceUnits("imperial")
282+
.requestUuid("uuid1")
283+
.build();
284+
285+
String jsonString = routeOptions.toJson();
286+
287+
String expectedJsonString = "{" +
288+
"\"profile\": \"auto\"," +
289+
"\"user\": \"mapbox\"," +
290+
"\"baseUrl\": \"https://api.mapbox.com\"," +
291+
"\"coordinates\": [[-3.707788,40.395039],[-3.712179,40.401819]]," +
292+
"\"access_token\": \"ACCESS_TOKEN\"," +
293+
"\"geometries\": \"polyline6\"," +
294+
"\"overview\": \"full\"," +
295+
"\"steps\": true," +
296+
"\"bearings\": \";\"," +
297+
"\"continue_straight\": true," +
298+
"\"annotations\": \"congestion,distance\"," +
299+
"\"language\": \"en\"," +
300+
"\"roundabout_exits\": true," +
301+
"\"voice_instructions\": true," +
302+
"\"banner_instructions\": true," +
303+
"\"voice_units\": \"imperial\"," +
304+
"\"uuid\": \"uuid1\"}";
305+
compareJson(expectedJsonString, jsonString);
306+
}
217307
}

0 commit comments

Comments
 (0)