Skip to content

Commit 55ec022

Browse files
authored
cherry pick: fix '&' char encoding (#1410) (#1413)
1 parent 094695c commit 55ec022

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,9 @@ public URL toUrl(@NonNull String accessToken) {
10191019
decodedUrl.getQuery(),
10201020
decodedUrl.getRef()
10211021
);
1022-
return new URL(encodedUri.toASCIIString());
1022+
// workaround to encode `&` chars in Strings like "me & you".
1023+
// need a better solution to fix encoding in general.
1024+
return new URL(encodedUri.toASCIIString().replace("%20&%20", "%20%26%20"));
10231025
} catch (MalformedURLException | URISyntaxException ex) {
10241026
throw new RuntimeException(ex);
10251027
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class RouteOptionsTest extends TestUtils {
2828
*/
2929
private static final String ROUTE_OPTIONS_JSON = "route_options_v5.json";
3030
private static final String ROUTE_OPTIONS_URL =
31-
"https://api.mapbox.com/directions/v5/mapbox/driving/-122.4003312,37.7736941;-122.4187529,37.7689715;-122.4255172,37.7775835?access_token=pk.token&geometries=polyline6&alternatives=false&overview=full&radiuses=;unlimited;5.1&steps=true&avoid_maneuver_radius=200.0&bearings=0,90;90,0;&layers=-42;;0&continue_straight=false&annotations=congestion,distance,duration&language=ru&roundabout_exits=false&voice_instructions=true&banner_instructions=true&voice_units=metric&exclude=toll,ferry,point(11.0%20-22.0)&include=hot,hov2&approaches=;curb;&waypoints=0;1;2&waypoint_names=;two;&waypoint_targets=;12.2,21.2;&enable_refresh=true&walking_speed=5.11&walkway_bias=-0.2&alley_bias=0.75&snapping_include_closures=;false;true&arrive_by=2021-01-01'T'01:01&depart_at=2021-02-02'T'02:02&max_height=1.5&max_width=1.4&metadata=true";
31+
"https://api.mapbox.com/directions/v5/mapbox/driving/-122.4003312,37.7736941;-122.4187529,37.7689715;-122.4255172,37.7775835?access_token=pk.token&geometries=polyline6&alternatives=false&overview=full&radiuses=;unlimited;5.1&steps=true&avoid_maneuver_radius=200.0&bearings=0,90;90,0;&layers=-42;;0&continue_straight=false&annotations=congestion,distance,duration&language=ru&roundabout_exits=false&voice_instructions=true&banner_instructions=true&voice_units=metric&exclude=toll,ferry,point(11.0%20-22.0)&include=hot,hov2&approaches=;curb;&waypoints=0;1;2&waypoint_names=one;Serangoon%20Garden%20Market%20%26%20Food%20Centre;&waypoint_targets=;12.2,21.2;&enable_refresh=true&walking_speed=5.11&walkway_bias=-0.2&alley_bias=0.75&snapping_include_closures=;false;true&arrive_by=2021-01-01'T'01:01&depart_at=2021-02-02'T'02:02&max_height=1.5&max_width=1.4&metadata=true";
3232
private static final String ACCESS_TOKEN = "pk.token";
3333

3434
private final String optionsJson = loadJsonFixture(ROUTE_OPTIONS_JSON);
@@ -236,7 +236,7 @@ public void waypointIndicesStringIsValid_fromJson() {
236236
public void waypointNamesStringIsValid_fromJson() {
237237
RouteOptions routeOptions = RouteOptions.fromJson(optionsJson);
238238

239-
assertEquals(";two;", routeOptions.waypointNames());
239+
assertEquals("one;Serangoon Garden Market & Food Centre;", routeOptions.waypointNames());
240240
}
241241

242242
@Test
@@ -663,7 +663,7 @@ private RouteOptions routeOptions() {
663663
.roundaboutExits(false)
664664
.voiceInstructions(true)
665665
.voiceUnits(DirectionsCriteria.METRIC)
666-
.waypointNames(";two;")
666+
.waypointNames("one;Serangoon Garden Market & Food Centre;")
667667
.waypointTargets(";12.2,21.2;")
668668
.waypointIndices("0;1;2")
669669
.alleyBias(0.75)
@@ -739,8 +739,8 @@ private RouteOptions routeOptionsList() {
739739
.voiceInstructions(true)
740740
.voiceUnits(DirectionsCriteria.METRIC)
741741
.waypointNamesList(new ArrayList<String>() {{
742-
add(null);
743-
add("two");
742+
add("one");
743+
add("Serangoon Garden Market & Food Centre");
744744
add(null);
745745
}})
746746
.waypointTargetsList(new ArrayList<Point>() {{

services-directions-models/src/test/resources/route_options_v5.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"voice_units": "metric",
2323
"approaches": ";curb;",
2424
"waypoints": "0;1;2",
25-
"waypoint_names": ";two;",
25+
"waypoint_names": "one;Serangoon Garden Market & Food Centre;",
2626
"waypoint_targets": ";12.2,21.2;",
2727
"snapping_include_closures": ";false;true",
2828
"alley_bias": 0.75,

0 commit comments

Comments
 (0)