Skip to content

Commit e5cfdcd

Browse files
author
Łukasz Paczos
committed
handle custom port number in RouteOptions#fromUrl
1 parent 368eb51 commit e5cfdcd

3 files changed

Lines changed: 28 additions & 1 deletion

File tree

CHANGELOG.md

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

55
### main
6+
- Fixed an issue where `RouteOptions#fromUrl` didn't deserialize the port number. [#1382](https://github.com/mapbox/mapbox-java/pull/1382)
67

78
### v6.4.0-beta.2 - March 10, 2022
89
- :warning: Fixed an issue where `RouteOptions#avoidManeuverRadius` field was represented as integer instead of double. This change is breaking but necessary to correctly represent the Directions API structure. [#1376](https://github.com/mapbox/mapbox-java/pull/1376)

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,12 @@ public String toJson() {
871871
public static RouteOptions fromUrl(@NonNull URL url) {
872872
JsonObject optionsJson = new JsonObject();
873873

874-
optionsJson.addProperty("baseUrl", url.getProtocol() + "://" + url.getHost());
874+
String baseUrl = url.getProtocol() + "://" + url.getHost();
875+
int port = url.getPort();
876+
if (port != -1) {
877+
baseUrl += ":" + port;
878+
}
879+
optionsJson.addProperty("baseUrl", baseUrl);
875880

876881
try {
877882
String[] pathElements = url.getPath().split("/");

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,27 @@ public void routeOptionsWithDefaults_toUrl() {
375375
assertEquals(expectedUrl, url.toString());
376376
}
377377

378+
@Test
379+
public void routeOptionsWithPort_roundtripping() {
380+
String expectedUrl =
381+
"https://api.mapbox.com:12345/directions/v5/mapbox/driving/-122.4003312,37.7736941;-122.4187529,37.7689715?access_token=pk.token&geometries=polyline6";
382+
List<Point> coordinates = new ArrayList<>();
383+
coordinates.add(Point.fromLngLat(-122.4003312, 37.7736941));
384+
coordinates.add(Point.fromLngLat(-122.4187529, 37.7689715));
385+
386+
RouteOptions options = RouteOptions.builder()
387+
.baseUrl("https://api.mapbox.com:12345")
388+
.profile(DirectionsCriteria.PROFILE_DRIVING)
389+
.coordinatesList(coordinates)
390+
.build();
391+
392+
URL url = options.toUrl(ACCESS_TOKEN);
393+
assertEquals(expectedUrl, url.toString());
394+
395+
RouteOptions recreatedOptions = RouteOptions.fromUrl(url);
396+
assertEquals(options, recreatedOptions);
397+
}
398+
378399
@Test
379400
public void baseUrlWithLastSlash() {
380401
String expectedUrl =

0 commit comments

Comments
 (0)