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 <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Mholloway <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: Sniedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits