Skip to content

Commit 59a9fc9

Browse files
Omit null optional fields in Nav events (#566)
* omit originalRequestIdentifier, requestIdentifier and audioType optional fields over sending nulls * add support for null json literals
1 parent 4af1718 commit 59a9fc9

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

mapbox/libandroid-telemetry/src/main/java/com/mapbox/services/android/telemetry/navigation/MapboxNavigationEvent.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.mapbox.services.android.telemetry.constants.TelemetryConstants;
66
import com.mapbox.services.android.telemetry.utils.TelemetryUtils;
77

8+
import org.json.JSONObject;
9+
810
import java.util.Date;
911
import java.util.Hashtable;
1012

@@ -226,7 +228,8 @@ public static Hashtable<String, Object> buildCancelEvent(
226228
event.put(KEY_DISTANCE_COMPLETED, distanceCompleted);
227229
event.put(KEY_DISTANCE_REMAINING, distanceRemaining);
228230
event.put(KEY_DURATION_REMAINING, durationRemaining);
229-
event.put(KEY_ARRIVAL_TIMESTAMP, arrivalTimestamp);
231+
// arrivalTimestamp may be null
232+
addArrivalTimestamp(event, arrivalTimestamp);
230233
return event;
231234
}
232235

@@ -258,15 +261,33 @@ private static Hashtable<String, Object> getMetadata(
258261
event.put(KEY_ORIGINAL_STEP_COUNT, originalStepCount);
259262
event.put(KEY_REROUTE_COUNT, rerouteCount);
260263
event.put(KEY_SIMULATION, isSimulation);
261-
event.put(KEY_ORIGINAL_REQUEST_IDENTIFIER, originalRequestIdentifier);
262-
event.put(KEY_REQUEST_IDENTIFIER, requestIdentifier);
264+
// originalRequestIdentifier may be "null"
265+
addPairIntoEventIfNeeded(event, KEY_ORIGINAL_REQUEST_IDENTIFIER, originalRequestIdentifier);
266+
// requestIdentifier may be "null"
267+
addPairIntoEventIfNeeded(event, KEY_REQUEST_IDENTIFIER, requestIdentifier);
263268
event.put(KEY_ORIGINAL_GEOMETRY, originalGeometry);
264269
event.put(KEY_ORIGINAL_ESTIMATED_DISTANCE, originalEstimatedDistance);
265270
event.put(KEY_ORIGINAL_ESTIMATED_DURATION, originalEstimatedDuration);
266-
event.put(KEY_AUDIO_TYPE, audioType);
271+
// audioType may be "null"
272+
addPairIntoEventIfNeeded(event, KEY_AUDIO_TYPE, audioType);
267273
return event;
268274
}
269275

276+
private static void addArrivalTimestamp(Hashtable<String, Object> event, Date arrivalTimestamp) {
277+
if (arrivalTimestamp == null) {
278+
event.put(KEY_ARRIVAL_TIMESTAMP, JSONObject.NULL);
279+
} else {
280+
event.put(KEY_ARRIVAL_TIMESTAMP, TelemetryUtils.generateCreateDateFormatted(arrivalTimestamp));
281+
}
282+
}
283+
284+
private static void addPairIntoEventIfNeeded(Hashtable<String, Object> event, String key, String value) {
285+
// See NavigationMetricsWrapper.java in https://github.com/mapbox/mapbox-navigation-android
286+
if (value == null || value.equalsIgnoreCase("null")) {
287+
event.put(key, JSONObject.NULL);
288+
}
289+
}
290+
270291
private static Hashtable<String, Object> getStepMetadata(
271292
String upcomingInstruction, String upcomingType, String upcomingModifier, String upcomingName,
272293
String previousInstruction, String previousType, String previousModifier, String previousName,

0 commit comments

Comments
 (0)