Yuvipanda has uploaded a new change for review.
https://gerrit.wikimedia.org/r/96749
Change subject: Fix copypasta errors in the ApiTask refactor
......................................................................
Fix copypasta errors in the ApiTask refactor
Also make the API consistent. Constructors should take
in directly the things they need to do their job, and
not just take context.
Change-Id: I51ad0291b35839795e53579a59773d4a47d03375
---
M wikipedia/src/main/java/org/wikimedia/wikipedia/ApiTask.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageImagesTask.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageQueryTask.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesTask.java
5 files changed, 33 insertions(+), 47 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/49/96749/1
diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/ApiTask.java
b/wikipedia/src/main/java/org/wikimedia/wikipedia/ApiTask.java
index 183a833..a561e0a 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/ApiTask.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/ApiTask.java
@@ -6,39 +6,20 @@
import org.wikimedia.wikipedia.concurrency.ExecutorService;
import org.wikimedia.wikipedia.concurrency.SaneAsyncTask;
+import java.util.concurrent.Executor;
+
abstract public class ApiTask<T> extends SaneAsyncTask<T> {
- private Site site;
- private WikipediaApp app;
+ private final Api api;
- private ApiResult result;
-
- public ApiTask(Context context, Site site) {
- super(ExecutorService.getSingleton().getExecutor(PageFetchTask.class,
2));
- this.site = site;
- this.app = (WikipediaApp)context.getApplicationContext();
+ public ApiTask(Executor executor, Api api) {
+ super(executor);
+ this.api = api;
}
@Override
public T performTask() throws Throwable {
- Api api = app.getAPIForSite(site);
- result = buildRequest(api);
+ ApiResult result = buildRequest(api);
return processResult(result);
- }
-
- // @fixme ApiResult.cancel doesn't actually cancel, instead causes app to
crash if run on main thread
- // uncomment this once fixed in java-mwapi
- /*
- @Override
- public void cancel() {
- super.cancel();
- if (result != null) {
- result.cancel();
- }
- }
- */
-
- public Site getSite() {
- return site;
}
abstract public ApiResult buildRequest(Api api);
diff --git
a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageImagesTask.java
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageImagesTask.java
index 6243345..195f722 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageImagesTask.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageImagesTask.java
@@ -3,18 +3,21 @@
import android.content.Context;
import android.util.Log;
import org.json.JSONObject;
+import org.mediawiki.api.json.Api;
import org.mediawiki.api.json.RequestBuilder;
+import org.wikimedia.wikipedia.concurrency.ExecutorService;
import java.util.List;
+import java.util.concurrent.Executor;
public class PageImagesTask extends PageQueryTask<String> {
- private int thumbSize;
- private int maxThumbs;
+ private final int thumbSize;
+ private final int thumbsCount;
- public PageImagesTask(Context context, Site site, List<PageTitle> titles,
int thumbSize) {
- super(context, site, titles);
+ public PageImagesTask(Api api, Site site, List<PageTitle> titles, int
thumbSize) {
+ super(ExecutorService.getSingleton().getExecutor(PageImagesTask.class,
2), api, site, titles);
this.thumbSize = thumbSize;
- maxThumbs = titles.size();
+ this.thumbsCount = titles.size();
}
@Override
@@ -22,7 +25,7 @@
builder.param("prop", "pageimages")
.param("piprop", "thumbnail")
.param("pithumbsize", Integer.toString(thumbSize))
- .param("pilimit", Integer.toString(maxThumbs));
+ .param("pilimit", Integer.toString(thumbsCount));
}
@Override
diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageQueryTask.java
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageQueryTask.java
index 5129a59..ef8dbf7 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageQueryTask.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageQueryTask.java
@@ -12,13 +12,16 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.Executor;
public abstract class PageQueryTask<T> extends ApiTask<Map<PageTitle,T>> {
- private List<PageTitle> titles;
+ private final List<PageTitle> titles;
+ private final Site site;
- public PageQueryTask(Context context, Site site, List<PageTitle> titles) {
- super(context, site);
+ public PageQueryTask(Executor executor, Api api, Site site,
List<PageTitle> titles) {
+ super(executor, api);
this.titles = titles;
+ this.site = site;
}
@Override
@@ -42,17 +45,13 @@
String key = keys.next();
int pageId = Integer.parseInt(key);
JSONObject pageData = pages.getJSONObject(key);
- PageTitle pageTitle = processPageTitle(pageData);
+ String titleString = pageData.getString("title");
+ PageTitle pageTitle = new PageTitle(null, titleString, site);
T pageResult = processPage(pageId, pageTitle, pageData);
map.put(pageTitle, pageResult);
}
return map;
- }
-
- public PageTitle processPageTitle(JSONObject pageData) throws Throwable {
- String title = pageData.getString("title");
- return new PageTitle(null, title, getSite());
}
abstract public void buildQueryParams(RequestBuilder buildQueryParams);
diff --git
a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
index 8e7732b..57c378f 100644
---
a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
+++
b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
@@ -56,7 +56,7 @@
getActivity().getCurrentFocus().clearFocus();
} else {
searchResultsList.setVisibility(View.VISIBLE);
- PageImagesTask imagesTask = new PageImagesTask(getActivity(),
app.getPrimarySite(), results, 48) {
+ PageImagesTask imagesTask = new
PageImagesTask(app.getAPIForSite(app.getPrimarySite()), app.getPrimarySite(),
results, 48) {
@Override
public void onFinish(Map<PageTitle, String> result) {
for(Map.Entry<PageTitle, String> entry :
result.entrySet()) {
@@ -93,7 +93,7 @@
public boolean handleMessage(Message msg) {
final String searchTerm = (String) msg.obj;
Log.d("Wikipedia", "Searching for " + searchTerm);
- SearchArticlesTask searchTask = new
SearchArticlesTask(getActivity(), app.getPrimarySite(), searchTerm) {
+ SearchArticlesTask searchTask = new
SearchArticlesTask(app.getAPIForSite(app.getPrimarySite()),
app.getPrimarySite(), searchTerm) {
@Override
public void onFinish(List<PageTitle> result) {
searchProgress.setVisibility(View.GONE);
diff --git
a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesTask.java
b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesTask.java
index 77b8dd4..e9e4d1b 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesTask.java
@@ -4,16 +4,19 @@
import org.json.JSONArray;
import org.mediawiki.api.json.Api;
import org.mediawiki.api.json.ApiResult;
+import org.wikimedia.wikipedia.concurrency.ExecutorService;
import java.util.ArrayList;
import java.util.List;
public class SearchArticlesTask extends ApiTask<List<PageTitle>>{
- private String prefix;
+ private final String prefix;
+ private final Site site;
- public SearchArticlesTask(Context context, Site site, String prefix) {
- super(context, site);
+ public SearchArticlesTask(Api api, Site site, String prefix) {
+
super(ExecutorService.getSingleton().getExecutor(SearchArticlesTask.class, 2),
api);
this.prefix = prefix;
+ this.site = site;
}
@Override
@@ -27,7 +30,7 @@
ArrayList<PageTitle> pageTitles = new ArrayList<PageTitle>();
for (int i = 0; i < searchResults.length(); i++) {
- pageTitles.add(new PageTitle(null, searchResults.optString(i),
getSite()));
+ pageTitles.add(new PageTitle(null, searchResults.optString(i),
site));
}
return pageTitles;
--
To view, visit https://gerrit.wikimedia.org/r/96749
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I51ad0291b35839795e53579a59773d4a47d03375
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits