jenkins-bot has submitted this change and it was merged.

Change subject: Safer RbService error handling
......................................................................


Safer RbService error handling

When we open an invalid page it was crashing before,
with exceptions in multiple places.

Also added a few missing @Nullable annotations.

Removed unused constant in Page class.

Change-Id: I2cce8be6aab3c4ea61778b525ebeac09be76691c
---
M app/src/main/java/org/wikipedia/page/Page.java
M app/src/main/java/org/wikipedia/page/PageProperties.java
M app/src/main/java/org/wikipedia/server/PageLeadProperties.java
M app/src/main/java/org/wikipedia/server/restbase/RbPageLead.java
4 files changed, 21 insertions(+), 12 deletions(-)

Approvals:
  Sniedzielski: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/app/src/main/java/org/wikipedia/page/Page.java 
b/app/src/main/java/org/wikipedia/page/Page.java
index 6d7bef7..abe97ae 100755
--- a/app/src/main/java/org/wikipedia/page/Page.java
+++ b/app/src/main/java/org/wikipedia/page/Page.java
@@ -12,10 +12,6 @@
  * Represents a particular page along with its full contents.
  */
 public class Page {
-    /**
-     * The props to send to api=mobileview to get all the data required for 
filling up Page object
-     */
-    public static final String API_REQUEST_PROPS = 
"lastmodified|normalizedtitle|displaytitle|protection|editable";
     private final PageTitle title;
     private final List<Section> sections;
     private final PageProperties pageProperties;
diff --git a/app/src/main/java/org/wikipedia/page/PageProperties.java 
b/app/src/main/java/org/wikipedia/page/PageProperties.java
index 3b1edb8..93761d3 100644
--- a/app/src/main/java/org/wikipedia/page/PageProperties.java
+++ b/app/src/main/java/org/wikipedia/page/PageProperties.java
@@ -9,6 +9,7 @@
 import org.json.JSONObject;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.server.PageLeadProperties;
+import org.wikipedia.util.StringUtil;
 
 import java.text.ParseException;
 import java.util.Date;
@@ -41,18 +42,20 @@
     public PageProperties(PageLeadProperties core) {
         pageId = core.getId();
         revisionId = core.getRevision();
-        displayTitleText = core.getDisplayTitle();
+        displayTitleText = StringUtil.emptyIfNull(core.getDisplayTitle());
         editProtectionStatus = core.getFirstAllowedEditorRole();
         languageCount = core.getLanguageCount();
         leadImageUrl = core.getLeadImageUrl();
         leadImageName = core.getLeadImageName();
         lastModified = new Date();
         String lastModifiedText = core.getLastModified();
-        try {
-            
lastModified.setTime(WikipediaApp.getInstance().getSimpleDateFormat()
-                    .parse(lastModifiedText).getTime());
-        } catch (ParseException e) {
-            Log.d("PageProperties", "Failed to parse date: " + 
lastModifiedText);
+        if (lastModifiedText != null) {
+            try {
+                
lastModified.setTime(WikipediaApp.getInstance().getSimpleDateFormat()
+                        .parse(lastModifiedText).getTime());
+            } catch (ParseException e) {
+                Log.d("PageProperties", "Failed to parse date: " + 
lastModifiedText);
+            }
         }
         // assume formatversion=2 is used so we get real booleans from the API
         canEdit = core.isEditable();
diff --git a/app/src/main/java/org/wikipedia/server/PageLeadProperties.java 
b/app/src/main/java/org/wikipedia/server/PageLeadProperties.java
index 9ed5e48..307c5d5 100644
--- a/app/src/main/java/org/wikipedia/server/PageLeadProperties.java
+++ b/app/src/main/java/org/wikipedia/server/PageLeadProperties.java
@@ -2,6 +2,7 @@
 
 import org.wikipedia.page.Section;
 
+import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 
 import java.util.List;
@@ -15,22 +16,30 @@
 
     long getRevision();
 
+    @Nullable
     String getLastModified();
 
     int getLanguageCount();
 
+    @Nullable
     String getDisplayTitle();
 
+    @Nullable
     String getRedirected();
 
+    @Nullable
     String getNormalizedTitle();
 
+    @Nullable
     String getDescription();
 
+    @Nullable
     String getLeadImageUrl();
 
+    @Nullable
     String getLeadImageName();
 
+    @Nullable
     String getFirstAllowedEditorRole();
 
     boolean isEditable();
@@ -40,5 +49,6 @@
     boolean isDisambiguation();
 
     @VisibleForTesting
+    @Nullable
     List<Section> getSections();
 }
diff --git a/app/src/main/java/org/wikipedia/server/restbase/RbPageLead.java 
b/app/src/main/java/org/wikipedia/server/restbase/RbPageLead.java
index 39fd337..dbfdb8e 100644
--- a/app/src/main/java/org/wikipedia/server/restbase/RbPageLead.java
+++ b/app/src/main/java/org/wikipedia/server/restbase/RbPageLead.java
@@ -46,7 +46,7 @@
 
     @Override
     public boolean hasError() {
-        return error != null;
+        return error != null || sections == null;
     }
 
     @Nullable
@@ -82,7 +82,7 @@
 
     public String getLeadSectionContent() {
         if (sections != null) {
-            return getSections().get(0).getContent();
+            return sections.get(0).getContent();
         } else {
             return "";
         }

-- 
To view, visit https://gerrit.wikimedia.org/r/235658
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2cce8be6aab3c4ea61778b525ebeac09be76691c
Gerrit-PatchSet: 3
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[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

Reply via email to