diff --git a/library/src/main/java/com/tomaytotomato/LocationService.java b/library/src/main/java/com/tomaytotomato/LocationService.java index 71bf46f..a07a302 100644 --- a/library/src/main/java/com/tomaytotomato/LocationService.java +++ b/library/src/main/java/com/tomaytotomato/LocationService.java @@ -10,12 +10,15 @@ import com.tomaytotomato.usecase.FindCity; import com.tomaytotomato.usecase.FindCountry; import com.tomaytotomato.usecase.FindState; + import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** * This class provides simple lookups for Country, State and City information. @@ -148,7 +151,7 @@ public Optional findCountryByISO3Code(String iso3Code) { } public List findAllCountries() { - return countries; + return Collections.unmodifiableList(countries); } /** @@ -174,9 +177,9 @@ public List findAllCountriesByStateName(String stateName) { return stateNameToStatesMap.get(stateName).stream().map(state -> findCountryById(state.getCountryId())) .filter(Optional::isPresent) .map(Optional::get) - .toList(); + .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); } else { - return new ArrayList<>(); + return Collections.emptyList(); } } @@ -197,9 +200,9 @@ public List findAllStatesByStateName(String stateName) { } stateName = textNormaliser.normalise(stateName); if (stateNameToStatesMap.containsKey(stateName)) { - return stateNameToStatesMap.get(stateName); + return Collections.unmodifiableList(stateNameToStatesMap.get(stateName)); } else { - return new ArrayList<>(); + return Collections.emptyList(); } } @@ -210,9 +213,9 @@ public List findAllStatesByStateCode(String stateCode) { } stateCode = textNormaliser.normalise(stateCode); if (stateCodeToStatesMap.containsKey(stateCode)) { - return stateCodeToStatesMap.get(stateCode); + return Collections.unmodifiableList(stateCodeToStatesMap.get(stateCode)); } else { - return new ArrayList<>(); + return Collections.emptyList(); } } @@ -226,7 +229,8 @@ public Optional findCityById(Integer id) { @Override public List findAllCities() { - return cityNameToCitiesMap.values().stream().flatMap(List::stream).toList(); + return cityNameToCitiesMap.values().stream().flatMap(List::stream).collect( + Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); } @Override @@ -236,9 +240,9 @@ public List findAllCitiesByCityName(String cityName) { } cityName = textNormaliser.normalise(cityName); if (cityNameToCitiesMap.containsKey(cityName)) { - return cityNameToCitiesMap.get(cityName); + return Collections.unmodifiableList(cityNameToCitiesMap.get(cityName)); } else { - return new ArrayList<>(); + return Collections.emptyList(); } } } diff --git a/library/src/main/java/com/tomaytotomato/SearchLocationService.java b/library/src/main/java/com/tomaytotomato/SearchLocationService.java index 1a4a12c..ed824ca 100644 --- a/library/src/main/java/com/tomaytotomato/SearchLocationService.java +++ b/library/src/main/java/com/tomaytotomato/SearchLocationService.java @@ -25,7 +25,6 @@ /** * Provides search functionality to find a Country, State or City based on text input - * */ public class SearchLocationService implements SearchLocation {