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