Skip to content

Commit af87a4b

Browse files
Merge pull request #1527 from amanjn38/fix/npe-getAllSituations
Add null guards in UIUtils.getAllSituations() to prevent NPE
2 parents 6da5cca + 9bce06b commit af87a4b

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

onebusaway-android/src/main/java/org/onebusaway/android/ui/ArrivalsListFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -971,7 +971,9 @@ public ArrayList<String> getRoutesFilter() {
971971
public void setRoutesFilter(ArrayList<String> routes) {
972972
mRoutesFilter = routes;
973973
ObaContract.StopRouteFilters.set(getActivity(), mStopId, mRoutesFilter);
974-
refreshSituations(UIUtils.getAllSituations(getArrivalsLoader().getLastGoodResponse(), mRoutesFilter));
974+
ArrivalsListLoader loader = getArrivalsLoader();
975+
ObaArrivalInfoResponse lastGood = loader != null ? loader.getLastGoodResponse() : null;
976+
refreshSituations(UIUtils.getAllSituations(lastGood, mRoutesFilter));
975977
refreshLocal();
976978
}
977979

onebusaway-android/src/main/java/org/onebusaway/android/util/UIUtils.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,11 @@ public static void closeKeyboard(Context context, View v) {
15571557
*/
15581558
public static List<ObaSituation> getAllSituations(final ObaArrivalInfoResponse response, List<String> filter) {
15591559
List<ObaSituation> allSituations = new ArrayList<>();
1560+
1561+
if (response == null) {
1562+
return allSituations;
1563+
}
1564+
15601565
// Add agency-wide and stop-specific alerts
15611566
allSituations.addAll(response.getSituations());
15621567

@@ -1578,9 +1583,16 @@ public static List<ObaSituation> getAllSituations(final ObaArrivalInfoResponse r
15781583
// If a filter list exists and a route_id is not included in the filter list, don't included
15791584
// it's situations in the returned list.
15801585
ObaArrivalInfo[] info = response.getArrivalInfo();
1586+
if (info == null) {
1587+
return allSituations;
1588+
}
15811589
for (ObaArrivalInfo i : info) {
1590+
String[] situationIds = i.getSituationIds();
1591+
if (situationIds == null) {
1592+
continue;
1593+
}
15821594
if (filterIds.isEmpty() || filterIds.contains(i.getRouteId())) {
1583-
for (String situationId : i.getSituationIds()) {
1595+
for (String situationId : situationIds) {
15841596
if (!allIds.contains(situationId)) {
15851597
allIds.add(situationId);
15861598
allSituations.add(response.getSituation(situationId));

0 commit comments

Comments
 (0)