Skip to content

Commit e3f86a1

Browse files
mmathieumgemini-code-assist[bot]Copilot
authored
ServiceUpdates (#162)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 2f34fe0 commit e3f86a1

14 files changed

Lines changed: 193 additions & 160 deletions

src/main/java/org/mtransit/android/commons/data/ServiceUpdate.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -132,31 +132,6 @@ public static boolean isSeverityInfo(int severity) {
132132
|| severity == SEVERITY_INFO_POI);
133133
}
134134

135-
public static boolean isSeverityWarning(@Nullable Iterable<ServiceUpdate> serviceUpdates) {
136-
if (serviceUpdates != null) {
137-
for (ServiceUpdate serviceUpdate : serviceUpdates) {
138-
if (serviceUpdate.isSeverityWarning()) {
139-
return true;
140-
}
141-
}
142-
}
143-
return false;
144-
}
145-
146-
public static boolean isSeverityInfo(@Nullable Iterable<ServiceUpdate> serviceUpdates) {
147-
if (serviceUpdates != null) {
148-
for (ServiceUpdate serviceUpdate : serviceUpdates) {
149-
if (serviceUpdate.isSeverityWarning()) {
150-
return false;
151-
}
152-
if (serviceUpdate.isSeverityInfo()) {
153-
return true;
154-
}
155-
}
156-
}
157-
return false;
158-
}
159-
160135
@SuppressWarnings("unused")
161136
public boolean hasMessage() {
162137
return this.severity != SEVERITY_NONE;

src/main/java/org/mtransit/android/commons/data/ServiceUpdateKtx.kt

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,8 @@ fun ServiceUpdate.syncTargetUUID(targetUUIDs: Map<String, String>?) {
1717
}
1818
}
1919

20-
@Suppress("unused") // main app only
21-
fun Iterable<ServiceUpdate>?.isSeverityWarningInfo(): Pair<Boolean, Boolean> {
22-
this ?: return false to false
23-
if (any { it.isSeverityWarning }) return true to false
24-
if (any { it.isSeverityInfo }) return false to true
25-
return false to false
26-
}
27-
28-
@Suppress("unused") // main app only
29-
fun Iterable<ServiceUpdate>.distinctByOriginalId() =
30-
this.distinctBy { it.originalId ?: it.id } // keep 1st occurrence from sorted list (in *Manager)
31-
3220
fun ServiceUpdateProviderContract.makeServiceUpdateNoneList(targetable: Targetable, sourceId: String) =
33-
buildList {
21+
buildServiceUpdates {
3422
add(makeServiceUpdateNone(targetable.uuid, sourceId))
3523
}
3624

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.mtransit.android.commons.data
2+
3+
import android.annotation.SuppressLint
4+
import java.util.function.IntFunction
5+
6+
class ServiceUpdates @JvmOverloads constructor(
7+
val list: MutableList<ServiceUpdate> = mutableListOf(),
8+
) : MutableList<ServiceUpdate> by list {
9+
10+
companion object {
11+
@JvmStatic
12+
fun newEmpty() = ServiceUpdates()
13+
}
14+
15+
fun areUseful() = any { it.isUseful }
16+
17+
fun isSeverityWarning(): Boolean = any { it.isSeverityWarning }
18+
19+
@Suppress("unused") // main app only
20+
fun isSeverityWarningXorInfo(): Pair<Boolean, Boolean> {
21+
if (any { it.isSeverityWarning }) return true to false
22+
if (any { it.isSeverityInfo }) return false to true
23+
return false to false
24+
}
25+
26+
@Suppress("unused") // main app only
27+
fun distinctByOriginalId(): ServiceUpdates = ServiceUpdates(this.distinctBy { it.originalId ?: it.id }.toMutableList())
28+
29+
fun distinct(): ServiceUpdates = ServiceUpdates(this.toSet().toMutableList())
30+
31+
fun filter(filter: (ServiceUpdate) -> Boolean) = ServiceUpdates(filterTo(mutableListOf(), filter))
32+
fun filterNot(filter: (ServiceUpdate) -> Boolean) = ServiceUpdates(filterNotTo(mutableListOf(), filter))
33+
34+
fun map(transform: (ServiceUpdate) -> ServiceUpdate) = ServiceUpdates(mapTo(mutableListOf(), transform))
35+
36+
@SuppressLint("DeprecatedCall")
37+
@Suppress("DEPRECATION", "PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
38+
@Deprecated("deprecated in Collection")
39+
override fun <T> toArray(generator: IntFunction<Array<out T?>?>): Array<out T?> {
40+
val array = generator.apply(this.size) ?: throw NullPointerException("generator returned null")
41+
for (i in indices) {
42+
(array as Array<Any?>)[i] = this.list[i]
43+
}
44+
return array
45+
}
46+
47+
override fun equals(other: Any?): Boolean {
48+
if (this === other) return true
49+
if (other !is List<*>) return false
50+
return list == other
51+
}
52+
53+
override fun hashCode() = list.hashCode()
54+
55+
override fun toString() = list.toString()
56+
}
57+
58+
inline fun buildServiceUpdates(builderAction: MutableCollection<ServiceUpdate>.() -> Unit): ServiceUpdates {
59+
return ServiceUpdates().apply(builderAction)
60+
}
61+
62+
fun ServiceUpdates?.orNewEmpty(): ServiceUpdates = this ?: ServiceUpdates.newEmpty()

src/main/java/org/mtransit/android/commons/provider/GTFSRealTimeProvider.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.mtransit.android.commons.data.POIStatus;
3737
import org.mtransit.android.commons.data.Route;
3838
import org.mtransit.android.commons.data.ServiceUpdate;
39+
import org.mtransit.android.commons.data.ServiceUpdates;
3940
import org.mtransit.android.commons.data.Stop;
4041
import org.mtransit.android.commons.provider.agency.AgencyUtils;
4142
import org.mtransit.android.commons.provider.common.MTContentProvider;
@@ -71,7 +72,6 @@
7172
import java.net.UnknownHostException;
7273
import java.security.MessageDigest;
7374
import java.text.ParseException;
74-
import java.util.ArrayList;
7575
import java.util.Arrays;
7676
import java.util.Date;
7777
import java.util.HashMap;
@@ -728,14 +728,14 @@ public String getServiceUpdateDbTableName() {
728728
}
729729

730730
@Override
731-
public void cacheServiceUpdates(@NonNull List<ServiceUpdate> newServiceUpdates) {
731+
public void cacheServiceUpdates(@NonNull ServiceUpdates newServiceUpdates) {
732732
ServiceUpdateProvider.cacheServiceUpdatesS(this, newServiceUpdates);
733733
}
734734

735735
@Nullable
736736
@Override
737-
public List<ServiceUpdate> getCachedServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
738-
final List<ServiceUpdate> cachedServiceUpdates = GTFSRealTimeServiceAlertsProvider.getCached(this, serviceUpdateFilter);
737+
public ServiceUpdates getCachedServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
738+
final ServiceUpdates cachedServiceUpdates = GTFSRealTimeServiceAlertsProvider.getCached(this, serviceUpdateFilter);
739739
GTFSRealTimeServiceAlertsProvider.enhanceServiceUpdate(this, cachedServiceUpdates);
740740
// if (org.mtransit.android.commons.Constants.DEBUG) {
741741
// MTLog.d(this, "getCachedServiceUpdates() > %s service updates for %s.", cachedServiceUpdates == null ? null : cachedServiceUpdates.size(), serviceUpdateFilter.getTargetUUID());
@@ -815,7 +815,7 @@ public static String getAgencyTagTargetUUID(@NonNull String agencyTag) {
815815
}
816816

817817
@Override
818-
public @Nullable List<ServiceUpdate> getNewServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
818+
public @Nullable ServiceUpdates getNewServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
819819
this.providedAgencyUrlToken = SecureStringUtils.dec(serviceUpdateFilter.getProvidedEncryptKey(KeysIds.GTFS_REAL_TIME_URL_TOKEN));
820820
this.providedAgencyUrlSecret = SecureStringUtils.dec(serviceUpdateFilter.getProvidedEncryptKey(KeysIds.GTFS_REAL_TIME_URL_SECRET));
821821
return GTFSRealTimeServiceAlertsProvider.getNew(this, serviceUpdateFilter);
@@ -874,7 +874,7 @@ private void updateAllAgencyServiceUpdateDataFromWWW(@NonNull Context context, b
874874
deleteAllAgencyServiceUpdateData();
875875
deleteAllDone = true;
876876
}
877-
final List<ServiceUpdate> newServiceUpdates = loadAgencyServiceUpdateDataFromWWW(context);
877+
final ServiceUpdates newServiceUpdates = loadAgencyServiceUpdateDataFromWWW(context);
878878
if (newServiceUpdates != null) { // empty is OK
879879
if (!deleteAllDone) {
880880
deleteAllAgencyServiceUpdateData();
@@ -919,7 +919,7 @@ public OkHttpClient getOkHttpClient(@NonNull Context context) {
919919
}
920920

921921
@Nullable
922-
private List<ServiceUpdate> loadAgencyServiceUpdateDataFromWWW(@NonNull Context context) {
922+
private ServiceUpdates loadAgencyServiceUpdateDataFromWWW(@NonNull Context context) {
923923
try {
924924
final Request urlRequest = GTFSRealTimeProviderExtKt.makeRequest(this,
925925
this,
@@ -934,7 +934,7 @@ private List<ServiceUpdate> loadAgencyServiceUpdateDataFromWWW(@NonNull Context
934934
switch (response.code()) {
935935
case HttpURLConnection.HTTP_OK:
936936
final long newLastUpdateInMs = TimeUtils.currentTimeMillis();
937-
final List<ServiceUpdate> serviceUpdates = new ArrayList<>();
937+
final ServiceUpdates serviceUpdates = new ServiceUpdates();
938938
final String sourceLabel = SourceUtils.getSourceLabel( // always use source from official API
939939
getAgencyServiceAlertsUrlString(context, "T")
940940
);
@@ -949,7 +949,7 @@ private List<ServiceUpdate> loadAgencyServiceUpdateDataFromWWW(@NonNull Context
949949
if (Constants.DEBUG) {
950950
MTLog.d(this, "loadAgencyServiceUpdateDataFromWWW() > GTFS - [%s] %s", feedEntityId, GtfsRealtimeExt.toStringExt(gAlert));
951951
}
952-
final Set<ServiceUpdate> alertsServiceUpdates = processAlerts(context, sourceLabel, feedEntityId, newLastUpdateInMs, gAlert, ignoreDirection);
952+
final ServiceUpdates alertsServiceUpdates = processAlerts(context, sourceLabel, feedEntityId, newLastUpdateInMs, gAlert, ignoreDirection);
953953
if (alertsServiceUpdates != null && !alertsServiceUpdates.isEmpty()) {
954954
serviceUpdates.addAll(alertsServiceUpdates);
955955
}
@@ -1024,7 +1024,7 @@ public String getHashSecretAndDate(@NonNull Context context) {
10241024
}
10251025

10261026
@Nullable
1027-
private HashSet<ServiceUpdate> processAlerts(
1027+
private ServiceUpdates processAlerts(
10281028
@NonNull Context context,
10291029
@NonNull String sourceLabel,
10301030
@Nullable String feedEntityId,
@@ -1074,7 +1074,7 @@ private HashSet<ServiceUpdate> processAlerts(
10741074
languages.addAll(urlTexts.keySet());
10751075
setServiceUpdateLanguages(languages);
10761076
final boolean noService = gEffect == GtfsRealtime.Alert.Effect.NO_SERVICE;
1077-
HashSet<ServiceUpdate> serviceUpdates = new HashSet<>();
1077+
final ServiceUpdates serviceUpdates = new ServiceUpdates();
10781078
long serviceUpdateMaxValidityInMs = getServiceUpdateMaxValidityInMs();
10791079
for (Map.Entry<String, String> entry : targetUUIDAndTripId.entrySet()) {
10801080
final String targetUUID = entry.getKey();
@@ -1099,7 +1099,7 @@ private HashSet<ServiceUpdate> processAlerts(
10991099
serviceUpdates.add(newServiceUpdate);
11001100
}
11011101
}
1102-
return serviceUpdates;
1102+
return serviceUpdates.distinct();
11031103
}
11041104

11051105
@Nullable

src/main/java/org/mtransit/android/commons/provider/NextBusProvider.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.mtransit.android.commons.data.Schedule;
3535
import org.mtransit.android.commons.data.ServiceUpdate;
3636
import org.mtransit.android.commons.data.ServiceUpdateKtxKt;
37+
import org.mtransit.android.commons.data.ServiceUpdates;
3738
import org.mtransit.android.commons.data.Stop;
3839
import org.mtransit.android.commons.helpers.MTDefaultHandler;
3940
import org.mtransit.android.commons.provider.agency.AgencyUtils;
@@ -66,7 +67,6 @@
6667
import java.net.HttpURLConnection;
6768
import java.net.SocketException;
6869
import java.net.UnknownHostException;
69-
import java.util.ArrayList;
7070
import java.util.Arrays;
7171
import java.util.Collection;
7272
import java.util.Collections;
@@ -605,13 +605,13 @@ public String getServiceUpdateDbTableName() {
605605
}
606606

607607
@Override
608-
public void cacheServiceUpdates(@NonNull List<ServiceUpdate> newServiceUpdates) {
608+
public void cacheServiceUpdates(@NonNull ServiceUpdates newServiceUpdates) {
609609
ServiceUpdateProvider.cacheServiceUpdatesS(this, newServiceUpdates);
610610
}
611611

612612
@Nullable
613613
@Override
614-
public List<ServiceUpdate> getCachedServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
614+
public ServiceUpdates getCachedServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
615615
final Context context = requireContextCompat();
616616
if (serviceUpdateFilter.getPoi() instanceof RouteDirectionStop) {
617617
return getCachedServiceUpdates(context, (RouteDirectionStop) serviceUpdateFilter.getPoi());
@@ -625,16 +625,16 @@ public List<ServiceUpdate> getCachedServiceUpdates(@NonNull ServiceUpdateProvide
625625
}
626626
}
627627

628-
private List<ServiceUpdate> getCachedServiceUpdates(@NonNull Context context, @NonNull RouteDirectionStop rds) {
628+
private ServiceUpdates getCachedServiceUpdates(@NonNull Context context, @NonNull RouteDirectionStop rds) {
629629
final Map<String, String> targetUUIDs = getServiceUpdateTargetUUIDs(context, rds);
630-
List<ServiceUpdate> cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
630+
ServiceUpdates cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
631631
enhanceRDServiceUpdateForStop(cachedServiceUpdates, targetUUIDs);
632632
return cachedServiceUpdates;
633633
}
634634

635-
private List<ServiceUpdate> getCachedServiceUpdates(@NonNull Context context, @NonNull RouteDirection rd) {
635+
private ServiceUpdates getCachedServiceUpdates(@NonNull Context context, @NonNull RouteDirection rd) {
636636
final Map<String, String> targetUUIDs = getServiceUpdateTargetUUIDs(context, rd);
637-
List<ServiceUpdate> cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
637+
ServiceUpdates cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
638638
enhanceRDServiceUpdateForStop(cachedServiceUpdates, targetUUIDs);
639639
// if (org.mtransit.android.commons.Constants.DEBUG) {
640640
// MTLog.d(this, "getCachedServiceUpdates(%s) > %s", rd.getUUID(), cachedServiceUpdates == null ? null : cachedServiceUpdates.size());
@@ -647,9 +647,9 @@ private List<ServiceUpdate> getCachedServiceUpdates(@NonNull Context context, @N
647647
return cachedServiceUpdates;
648648
}
649649

650-
private List<ServiceUpdate> getCachedServiceUpdates(@NonNull Context context, @NonNull Route route) {
650+
private ServiceUpdates getCachedServiceUpdates(@NonNull Context context, @NonNull Route route) {
651651
final Map<String, String> targetUUIDs = getServiceUpdateTargetUUIDs(context, route);
652-
List<ServiceUpdate> cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
652+
ServiceUpdates cachedServiceUpdates = ServiceUpdateProviderExtKt.getCachedServiceUpdatesS(this, targetUUIDs.keySet());
653653
enhanceRDServiceUpdateForStop(cachedServiceUpdates, targetUUIDs);
654654
// if (org.mtransit.android.commons.Constants.DEBUG) {
655655
// MTLog.d(this, "getCachedServiceUpdates(%s) > %s", route.getUUID(), cachedServiceUpdates == null ? null : cachedServiceUpdates.size());
@@ -662,7 +662,7 @@ private List<ServiceUpdate> getCachedServiceUpdates(@NonNull Context context, @N
662662
return cachedServiceUpdates;
663663
}
664664

665-
private void enhanceRDServiceUpdateForStop(@Nullable List<ServiceUpdate> serviceUpdates,
665+
private void enhanceRDServiceUpdateForStop(@Nullable ServiceUpdates serviceUpdates,
666666
@NonNull Map<String, String> targetUUIDs // different UUID from provider target UUID
667667
) {
668668
try {
@@ -836,7 +836,7 @@ public NextBusStorage getStorage(@NonNull Context context) {
836836

837837
@Nullable
838838
@Override
839-
public List<ServiceUpdate> getNewServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
839+
public ServiceUpdates getNewServiceUpdates(@NonNull ServiceUpdateProviderContract.Filter serviceUpdateFilter) {
840840
final Context context = requireContextCompat();
841841
if (serviceUpdateFilter.getPoi() instanceof RouteDirectionStop) {
842842
return getNewServiceUpdates(context, (RouteDirectionStop) serviceUpdateFilter.getPoi(), serviceUpdateFilter.isInFocusOrDefault());
@@ -850,29 +850,29 @@ public List<ServiceUpdate> getNewServiceUpdates(@NonNull ServiceUpdateProviderCo
850850
}
851851
}
852852

853-
private List<ServiceUpdate> getNewServiceUpdates(@NonNull Context context, @NonNull RouteDirectionStop rds, boolean inFocus) {
853+
private ServiceUpdates getNewServiceUpdates(@NonNull Context context, @NonNull RouteDirectionStop rds, boolean inFocus) {
854854
updateAgencyServiceUpdateDataIfRequired(requireContextCompat(), inFocus);
855-
List<ServiceUpdate> cachedServiceUpdates = getCachedServiceUpdates(context, rds);
855+
ServiceUpdates cachedServiceUpdates = getCachedServiceUpdates(context, rds);
856856
if (CollectionUtils.getSize(cachedServiceUpdates) == 0) {
857857
cachedServiceUpdates = makeServiceUpdateNoneList(this, rds, AGENCY_SOURCE_ID);
858858
enhanceRDServiceUpdateForStop(cachedServiceUpdates, Collections.emptyMap());
859859
}
860860
return cachedServiceUpdates;
861861
}
862862

863-
private List<ServiceUpdate> getNewServiceUpdates(@NonNull Context context, @NonNull RouteDirection rd, boolean inFocus) {
863+
private ServiceUpdates getNewServiceUpdates(@NonNull Context context, @NonNull RouteDirection rd, boolean inFocus) {
864864
updateAgencyServiceUpdateDataIfRequired(requireContextCompat(), inFocus);
865-
List<ServiceUpdate> cachedServiceUpdates = getCachedServiceUpdates(context, rd);
865+
ServiceUpdates cachedServiceUpdates = getCachedServiceUpdates(context, rd);
866866
if (CollectionUtils.getSize(cachedServiceUpdates) == 0) {
867867
cachedServiceUpdates = makeServiceUpdateNoneList(this, rd, AGENCY_SOURCE_ID);
868868
enhanceRDServiceUpdateForStop(cachedServiceUpdates, Collections.emptyMap());
869869
}
870870
return cachedServiceUpdates;
871871
}
872872

873-
private List<ServiceUpdate> getNewServiceUpdates(@NonNull Context context, @NonNull Route route, boolean inFocus) {
873+
private ServiceUpdates getNewServiceUpdates(@NonNull Context context, @NonNull Route route, boolean inFocus) {
874874
updateAgencyServiceUpdateDataIfRequired(requireContextCompat(), inFocus);
875-
List<ServiceUpdate> cachedServiceUpdates = getCachedServiceUpdates(context, route);
875+
ServiceUpdates cachedServiceUpdates = getCachedServiceUpdates(context, route);
876876
if (CollectionUtils.getSize(cachedServiceUpdates) == 0) {
877877
cachedServiceUpdates = makeServiceUpdateNoneList(this, route, AGENCY_SOURCE_ID);
878878
enhanceRDServiceUpdateForStop(cachedServiceUpdates, Collections.emptyMap());
@@ -912,7 +912,7 @@ private void updateAllAgencyServiceUpdateDataFromWWW(@NonNull Context context, b
912912
deleteAllAgencyServiceUpdateData();
913913
deleteAllDone = true;
914914
}
915-
List<ServiceUpdate> newServiceUpdates = loadAgencyServiceUpdateDataFromWWW(context);
915+
ServiceUpdates newServiceUpdates = loadAgencyServiceUpdateDataFromWWW(context);
916916
if (newServiceUpdates != null) { // empty is OK
917917
long nowInMs = TimeUtils.currentTimeMillis();
918918
if (!deleteAllDone) {
@@ -944,7 +944,7 @@ private static String getAgencyUrlString(@NonNull Context context) {
944944
}
945945

946946
@Nullable
947-
private List<ServiceUpdate> loadAgencyServiceUpdateDataFromWWW(@NonNull Context context) {
947+
private ServiceUpdates loadAgencyServiceUpdateDataFromWWW(@NonNull Context context) {
948948
try {
949949
final String urlString = getAgencyUrlString(context);
950950
MTLog.i(this, "Loading from '%s'...", urlString);
@@ -970,7 +970,7 @@ private List<ServiceUpdate> loadAgencyServiceUpdateDataFromWWW(@NonNull Context
970970
);
971971
xr.setContentHandler(handler);
972972
xr.parse(new InputSource(response.body().byteStream()));
973-
final List<ServiceUpdate> serviceUpdates = handler.getServiceUpdates();
973+
final ServiceUpdates serviceUpdates = handler.getServiceUpdates();
974974
MTLog.i(this, "Found %d service updates.", serviceUpdates.size());
975975
return serviceUpdates;
976976
default:
@@ -1627,7 +1627,7 @@ public String getLogTag() {
16271627
private final long serviceUpdateMaxValidityInMs;
16281628

16291629
@NonNull
1630-
private final List<ServiceUpdate> serviceUpdates = new ArrayList<>();
1630+
private final ServiceUpdates serviceUpdates = new ServiceUpdates();
16311631

16321632
private final String agencyTag;
16331633

@@ -1689,7 +1689,7 @@ public String getLogTag() {
16891689
}
16901690

16911691
@NonNull
1692-
List<ServiceUpdate> getServiceUpdates() {
1692+
ServiceUpdates getServiceUpdates() {
16931693
return this.serviceUpdates;
16941694
}
16951695

0 commit comments

Comments
 (0)