BearND has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/235658

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

Change-Id: I2cce8be6aab3c4ea61778b525ebeac09be76691c
---
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
3 files changed, 24 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/58/235658/1

diff --git a/app/src/main/java/org/wikipedia/page/PageProperties.java 
b/app/src/main/java/org/wikipedia/page/PageProperties.java
index 3b1edb8..62e7f6d 100644
--- a/app/src/main/java/org/wikipedia/page/PageProperties.java
+++ b/app/src/main/java/org/wikipedia/page/PageProperties.java
@@ -41,18 +41,24 @@
     public PageProperties(PageLeadProperties core) {
         pageId = core.getId();
         revisionId = core.getRevision();
-        displayTitleText = core.getDisplayTitle();
+        if (core.getDisplayTitle() == null) {
+            displayTitleText = "";
+        } else {
+            displayTitleText = 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: newchange
Gerrit-Change-Id: I2cce8be6aab3c4ea61778b525ebeac09be76691c
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to