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

Reply via email to