Skip to content

Commit 5eddaf6

Browse files
Added DirectionsRefreshResponse#fromJson(Reader) (#1629)
1 parent 1852473 commit 5eddaf6

3 files changed

Lines changed: 43 additions & 4 deletions

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+
- Added `DirectionsRefreshResponse#fromJson(Reader)`, a static factory method that deserializes a `DirectionsRefreshResponse` from a `java.io.Reader`.
67

78
### v7.9.0 - November 20, 2025
89

services-directions-refresh-models/src/main/java/com/mapbox/api/directionsrefresh/v1/models/DirectionsRefreshResponse.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.mapbox.api.directions.v5.DirectionsAdapterFactory;
1111
import com.mapbox.api.directionsrefresh.v1.DirectionsRefreshAdapterFactory;
1212

13+
import java.io.Reader;
14+
1315
/**
1416
* Response object for Directions Refresh requests.
1517
*
@@ -88,10 +90,26 @@ public static TypeAdapter<DirectionsRefreshResponse> typeAdapter(Gson gson) {
8890
* @since 4.4.0
8991
*/
9092
public static DirectionsRefreshResponse fromJson(String json) {
91-
GsonBuilder gsonBuilder = new GsonBuilder();
92-
gsonBuilder.registerTypeAdapterFactory(DirectionsRefreshAdapterFactory.create())
93-
.registerTypeAdapterFactory(DirectionsAdapterFactory.create());
94-
return gsonBuilder.create().fromJson(json, DirectionsRefreshResponse.class);
93+
return createGson().fromJson(json, DirectionsRefreshResponse.class);
94+
}
95+
96+
/**
97+
* Deserializes a {@link DirectionsRefreshResponse} from the given reader.
98+
*
99+
* @param json a {@link Reader} that provides valid JSON representing a
100+
* Directions Refresh response
101+
* @return a new {@link DirectionsRefreshResponse} instance created from the provided reader
102+
*/
103+
public static DirectionsRefreshResponse fromJson(@NonNull Reader json) {
104+
return createGson().fromJson(json, DirectionsRefreshResponse.class);
105+
}
106+
107+
@NonNull
108+
private static Gson createGson() {
109+
return new GsonBuilder()
110+
.registerTypeAdapterFactory(DirectionsRefreshAdapterFactory.create())
111+
.registerTypeAdapterFactory(DirectionsAdapterFactory.create())
112+
.create();
95113
}
96114

97115
/**

services-directions-refresh-models/src/test/java/com.mapbox.api.directionsrefresh.v1.models/DirectionsRefreshResponseTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.junit.Test;
1010

1111
import java.io.IOException;
12+
import java.io.InputStreamReader;
1213
import java.util.Collections;
1314
import java.util.HashMap;
1415
import java.util.Map;
@@ -17,6 +18,7 @@
1718
import static org.junit.Assert.assertNotNull;
1819
import static org.junit.Assert.assertNull;
1920
import static org.junit.Assert.assertTrue;
21+
import static org.junit.Assert.assertFalse;
2022

2123
public class DirectionsRefreshResponseTest extends TestUtils {
2224

@@ -69,6 +71,24 @@ public void testSerializationDeserialization() throws IOException {
6971
assertEquals(fromJson1, fromJson2);
7072
}
7173

74+
@Test
75+
public void testDeserializationFromReader() {
76+
final InputStreamReader reader = getResourceInputSteamReader(DIRECTIONS_REFRESH_V1_WAYPOINTS);
77+
final DirectionsRefreshResponse response = DirectionsRefreshResponse.fromJson(reader);
78+
79+
assertEquals("Ok", response.code());
80+
assertNotNull(response.route());
81+
assertNotNull(response.route().legs());
82+
83+
final RouteLegRefresh leg = response.route().legs().get(0);
84+
assertNotNull(leg);
85+
assertNotNull(leg.annotation());
86+
assertFalse(leg.annotation().congestion().isEmpty());
87+
assertFalse(leg.annotation().trafficTendency().isEmpty());
88+
assertFalse(leg.incidents().isEmpty());
89+
assertFalse(leg.closures().isEmpty());
90+
}
91+
7292
@Test
7393
public void accessUnrecognizedProperties() throws Exception {
7494
Map<String, JsonElement> expected = new HashMap<>();

0 commit comments

Comments
 (0)