jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/333285 )
Change subject: Hygiene: split nearby MwApiResponsePage data into subclass ...................................................................... Hygiene: split nearby MwApiResponsePage data into subclass MwApiResponsePage could model many different MediaWiki responses but subclassing for broad use cases seems more appropriate. Begin by breaking out nearby data into a new class, NearbyPageMwResponse Change-Id: I6ee83ddf4644ec69a3c71eccdd49190b4a4f58bb --- M app/src/main/java/org/wikipedia/nearby/Nearby.java M app/src/main/java/org/wikipedia/nearby/NearbyPage.java M app/src/main/java/org/wikipedia/server/mwapi/MwApiResponsePage.java A app/src/main/java/org/wikipedia/server/mwapi/NearbyPageMwResponse.java M app/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java 5 files changed, 54 insertions(+), 51 deletions(-) Approvals: jenkins-bot: Verified Mholloway: Looks good to me, approved diff --git a/app/src/main/java/org/wikipedia/nearby/Nearby.java b/app/src/main/java/org/wikipedia/nearby/Nearby.java index d82423e..7fe0ccb 100644 --- a/app/src/main/java/org/wikipedia/nearby/Nearby.java +++ b/app/src/main/java/org/wikipedia/nearby/Nearby.java @@ -3,14 +3,14 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import org.wikipedia.server.mwapi.MwApiResponsePage; +import org.wikipedia.server.mwapi.NearbyPageMwResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; class Nearby { - @SuppressWarnings("unused") @Nullable private Map<String, MwApiResponsePage> pages; + @SuppressWarnings("unused") @Nullable private Map<String, NearbyPageMwResponse> pages; @NonNull List<NearbyPage> list() { List<NearbyPage> result = new ArrayList<>(); @@ -19,7 +19,7 @@ return result; } - for (Map.Entry<String, MwApiResponsePage> entry : pages.entrySet()) { + for (Map.Entry<String, NearbyPageMwResponse> entry : pages.entrySet()) { NearbyPage page = new NearbyPage(entry.getValue()); if (page.getLocation() != null) { result.add(page); diff --git a/app/src/main/java/org/wikipedia/nearby/NearbyPage.java b/app/src/main/java/org/wikipedia/nearby/NearbyPage.java index 4312cae..e83f744 100644 --- a/app/src/main/java/org/wikipedia/nearby/NearbyPage.java +++ b/app/src/main/java/org/wikipedia/nearby/NearbyPage.java @@ -5,7 +5,7 @@ import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; -import org.wikipedia.server.mwapi.MwApiResponsePage; +import org.wikipedia.server.mwapi.NearbyPageMwResponse; import java.util.List; @@ -17,10 +17,10 @@ /** calculated externally */ private int distance; - NearbyPage(@NonNull MwApiResponsePage page) { + NearbyPage(@NonNull NearbyPageMwResponse page) { title = page.title(); thumbUrl = page.thumbUrl(); - List<MwApiResponsePage.Coordinates> coordinates = page.coordinates(); + List<NearbyPageMwResponse.Coordinates> coordinates = page.coordinates(); if (coordinates != null && !coordinates.isEmpty()) { location = new Location(title); location.setLatitude(page.coordinates().get(0).lat()); @@ -28,13 +28,9 @@ } } - @VisibleForTesting NearbyPage(@NonNull String title, @NonNull Location location) { + @VisibleForTesting NearbyPage(@NonNull String title, @Nullable Location location) { this.title = title; this.location = location; - } - - @VisibleForTesting NearbyPage(@NonNull String title) { - this.title = title; } @NonNull public String getTitle() { @@ -69,4 +65,4 @@ public void setDistance(int distance) { this.distance = distance; } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/wikipedia/server/mwapi/MwApiResponsePage.java b/app/src/main/java/org/wikipedia/server/mwapi/MwApiResponsePage.java index 139200f..18920cf 100644 --- a/app/src/main/java/org/wikipedia/server/mwapi/MwApiResponsePage.java +++ b/app/src/main/java/org/wikipedia/server/mwapi/MwApiResponsePage.java @@ -2,14 +2,11 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import com.google.gson.annotations.SerializedName; -import org.wikipedia.json.annotations.Required; import org.wikipedia.model.BaseModel; -import java.util.Collections; import java.util.List; /** @@ -22,7 +19,6 @@ @SuppressWarnings("unused") @Nullable private List<LangLink> langlinks; @SuppressWarnings("unused") @Nullable private List<Revision> revisions; @SuppressWarnings("unused") @Nullable private Thumbnail thumbnail; - @SuppressWarnings("unused") @Nullable private List<Coordinates> coordinates; @SuppressWarnings("unused") @Nullable private Terms terms; @NonNull public String title() { @@ -43,38 +39,6 @@ @Nullable public String description() { return terms != null && terms.description() != null ? terms.description().get(0) : null; - } - - @Nullable public List<Coordinates> coordinates() { - // TODO: Handle null values in lists during deserialization, perhaps with a new - // @RequiredElements annotation and corresponding TypeAdapter - if (coordinates != null && coordinates.contains(null)) { - coordinates.removeAll(Collections.singleton(null)); - } - return coordinates; - } - - @VisibleForTesting public void setTitle(@NonNull String title) { - this.title = title; - } - - public static class Coordinates { - // Use Double object type rather than primitive type so that the presence of the fields can - // be checked correctly by the RequiredFieldsCheckOnReadTypeAdapter. - @SuppressWarnings("unused") @Required @NonNull private Double lat; - @SuppressWarnings("unused") @Required @NonNull private Double lon; - - public Coordinates(double lat, double lon) { - this.lat = lat; - this.lon = lon; - } - - public double lat() { - return lat; - } - public double lon() { - return lon; - } } public static class Revision { diff --git a/app/src/main/java/org/wikipedia/server/mwapi/NearbyPageMwResponse.java b/app/src/main/java/org/wikipedia/server/mwapi/NearbyPageMwResponse.java new file mode 100644 index 0000000..db9deea --- /dev/null +++ b/app/src/main/java/org/wikipedia/server/mwapi/NearbyPageMwResponse.java @@ -0,0 +1,41 @@ +package org.wikipedia.server.mwapi; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +import org.wikipedia.json.annotations.Required; + +import java.util.Collections; +import java.util.List; + +public class NearbyPageMwResponse extends MwApiResponsePage { + @SuppressWarnings("unused") @Nullable private List<Coordinates> coordinates; + + @Nullable public List<Coordinates> coordinates() { + // TODO: Handle null values in lists during deserialization, perhaps with a new + // @RequiredElements annotation and corresponding TypeAdapter + if (coordinates != null) { + coordinates.removeAll(Collections.singleton(null)); + } + return coordinates; + } + + public static class Coordinates { + // Use Double object type rather than primitive type so that the presence of the fields can + // be checked correctly by the RequiredFieldsCheckOnReadTypeAdapter. + @SuppressWarnings("unused") @Required @NonNull private Double lat; + @SuppressWarnings("unused") @Required @NonNull private Double lon; + + public Coordinates(double lat, double lon) { + this.lat = lat; + this.lon = lon; + } + + public double lat() { + return lat; + } + public double lon() { + return lon; + } + } +} \ No newline at end of file diff --git a/app/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java b/app/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java index 2ac4af9..5672d82 100644 --- a/app/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java +++ b/app/src/test/java/org/wikipedia/nearby/NearbyUnitTest.java @@ -50,8 +50,9 @@ } @Test public void testSortWithNullLocations() throws Throwable { - nearbyPages.add(new NearbyPage("d")); - nearbyPages.add(new NearbyPage("e")); + final Location location = null; + nearbyPages.add(new NearbyPage("d", location)); + nearbyPages.add(new NearbyPage("e", location)); calcDistances(nearbyPages); Collections.sort(nearbyPages, new NearbyDistanceComparator()); assertThat("a", is(nearbyPages.get(0).getTitle())); @@ -63,7 +64,8 @@ } @Test public void testCompare() throws Throwable { - NearbyPage nullLocPage = new NearbyPage("nowhere"); + final Location location = null; + NearbyPage nullLocPage = new NearbyPage("nowhere", location); calcDistances(nearbyPages); nullLocPage.setDistance(getDistance(nullLocPage.getLocation())); -- To view, visit https://gerrit.wikimedia.org/r/333285 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6ee83ddf4644ec69a3c71eccdd49190b4a4f58bb Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits