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