jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/361294 )
Change subject: Remove dependency on apps-android-java-mwapi library
......................................................................
Remove dependency on apps-android-java-mwapi library
Bug: T141127
Change-Id: Id8dde4eb22aa408e643a9b622dba654ffc5319f1
---
M app/build.gradle
M app/src/main/java/org/wikipedia/WikipediaApp.java
M app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
M
app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
M app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/util/ThrowableUtil.java
M app/src/main/java/org/wikipedia/views/WikiErrorView.java
D app/src/test/java/org/wikipedia/test/TestApi.java
M settings.gradle
10 files changed, 11 insertions(+), 154 deletions(-)
Approvals:
jenkins-bot: Verified
Mholloway: Looks good to me, approved
diff --git a/app/build.gradle b/app/build.gradle
index 988d08a..7f92afc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -156,7 +156,6 @@
}
dependencies {
- compileSubprojectOrModule ':java-mwapi:json',
'org.mediawiki.api:json:1.3.5', 'org.json', 'json'
// To keep the Maven Central dependencies up-to-date
// use http://gradleplease.appspot.com/ or http://search.maven.org/.
diff --git a/app/src/main/java/org/wikipedia/WikipediaApp.java
b/app/src/main/java/org/wikipedia/WikipediaApp.java
index 29f20e9..320a9d8 100644
--- a/app/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/app/src/main/java/org/wikipedia/WikipediaApp.java
@@ -19,7 +19,6 @@
import com.squareup.leakcanary.RefWatcher;
import com.squareup.otto.Bus;
-import org.mediawiki.api.json.Api;
import org.wikipedia.analytics.FunnelManager;
import org.wikipedia.analytics.SessionFunnel;
import org.wikipedia.auth.AccountUtil;
@@ -86,7 +85,6 @@
private final RemoteConfig remoteConfig = new RemoteConfig();
private final Map<Class<?>, DatabaseClient<?>> databaseClients =
Collections.synchronizedMap(new HashMap<Class<?>, DatabaseClient<?>>());
- private final Map<String, Api> apis = new HashMap<>();
private AppLanguageState appLanguageState;
private FunnelManager funnelManager;
private SessionFunnel sessionFunnel;
@@ -160,8 +158,6 @@
enableWebViewDebugging();
- Api.setConnectionFactory(new OkHttpConnectionFactory());
-
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
.setNetworkFetcher(new
CacheableOkHttpNetworkFetcher(OkHttpConnectionFactory.getClient()))
.build();
@@ -209,23 +205,6 @@
: defaultString(wiki.languageCode());
return AcceptLanguageUtil.getAcceptLanguage(wikiLang,
defaultString(getAppLanguageCode()),
appLanguageState.getSystemLanguageCode());
- }
-
- public Api getAPIForSite(WikiSite wiki) {
- String host = wiki.host();
- String acceptLanguage = getAcceptLanguage(wiki);
- Map<String, String> customHeaders =
buildCustomHeadersMap(acceptLanguage);
- Api api;
-
- String cachedApiKey = host + "-" + acceptLanguage;
- if (apis.containsKey(cachedApiKey)) {
- api = apis.get(cachedApiKey);
- } else {
- api = new Api(host, wiki.port(), wiki.secureScheme(),
- wiki.path("api.php"), customHeaders);
- apis.put(cachedApiKey, api);
- }
- return api;
}
/**
@@ -501,25 +480,6 @@
public void listenForNotifications() {
notificationReceiver.startPollTask(this);
- }
-
- // For java-mwapi API requests.
- // If adding a new header here (before this method is removed), make sure
to duplicate it
- // in the Retrofit header list
(OkHttpConnectionFactory#CommonHeaderInterceptor).
- @Deprecated
- private Map<String, String> buildCustomHeadersMap(String acceptLanguage) {
- Map<String, String> headers = new HashMap<>();
- headers.put("User-Agent", getUserAgent());
-
- if (isEventLoggingEnabled()) {
- headers.put("X-WMF-UUID", getAppInstallID());
- } else {
- // Send do-not-track header if the user has opted out of event
logging
- headers.put("DNT", "1");
- }
-
- headers.put("Accept-Language", acceptLanguage);
- return headers;
}
private void initAppLang() {
diff --git a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
index 03fcb26..5587857 100644
--- a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
+++ b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
@@ -18,7 +18,6 @@
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.image.ImageInfo;
-import org.mediawiki.api.json.RequestBuilder;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.WikiSite;
@@ -182,14 +181,4 @@
hideCaptcha();
return true;
}
-
- public RequestBuilder populateBuilder(RequestBuilder builder) {
- if (captchaResult == null) {
- return builder;
- }
-
- return builder.param("captchaId", captchaResult.getCaptchaId())
- .param("captchaWord", captchaText.getText().toString());
- }
-
}
diff --git
a/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
b/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
index 1b43557..a1befcb 100644
---
a/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
+++
b/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
@@ -8,9 +8,6 @@
import okhttp3.Request;
import okhttp3.Response;
-// If adding a new header here, make sure to duplicate it in the MWAPI header
builder
-// (WikipediaApp.buildCustomHeadersMap()).
-// TODO: remove above comment once buildCustomHeadersMap() is removed.
class CommonHeaderRequestInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
WikipediaApp app = WikipediaApp.getInstance();
diff --git
a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
index 1a19fa5..bf82aca 100644
---
a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
+++
b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
@@ -3,29 +3,22 @@
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
-import com.github.kevinsawicki.http.HttpRequest;
-
import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
import org.wikipedia.settings.Prefs;
import org.wikipedia.settings.RbSwitch;
import java.io.File;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.Proxy;
-import java.net.URL;
import okhttp3.Cache;
import okhttp3.CacheDelegate;
import okhttp3.CookieJar;
import okhttp3.JavaNetCookieJar;
import okhttp3.OkHttpClient;
-import okhttp3.OkUrlFactory;
import okhttp3.internal.cache.CacheDelegateInterceptor;
import okhttp3.logging.HttpLoggingInterceptor;
-public class OkHttpConnectionFactory implements HttpRequest.ConnectionFactory {
+public final class OkHttpConnectionFactory {
private static final String CACHE_DIR_NAME = "okhttp-cache";
private static final long NET_CACHE_SIZE = 64 * 1024 * 1024;
@VisibleForTesting @NonNull public static final Cache NET_CACHE = new
Cache(new File(WikipediaApp.getInstance().getCacheDir(),
@@ -38,17 +31,6 @@
@NonNull public static OkHttpClient getClient() {
return CLIENT;
- }
-
- @Override
- public HttpURLConnection create(URL url) throws IOException {
- return new OkUrlFactory(getClient()).open(url); // TODO: update to
newer API
- }
-
- @Override
- public HttpURLConnection create(URL url, Proxy proxy) throws IOException {
- throw new UnsupportedOperationException(
- "Per-connection proxy is not supported. Use OkHttpClient's
setProxy instead.");
}
@NonNull
@@ -71,4 +53,7 @@
.addInterceptor(new
WikipediaZeroResponseInterceptor(WikipediaApp.getInstance().getWikipediaZeroHandler()))
.build();
}
+
+ private OkHttpConnectionFactory() {
+ }
}
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index 3814aed..c4a98cc 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -15,7 +15,6 @@
import org.json.JSONException;
import org.json.JSONObject;
-import org.mediawiki.api.json.ApiException;
import org.wikipedia.Constants;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
@@ -23,7 +22,9 @@
import org.wikipedia.bridge.CommunicationBridge;
import org.wikipedia.database.contract.PageImageHistoryContract;
import org.wikipedia.dataclient.ServiceError;
+import org.wikipedia.dataclient.mwapi.MwException;
import org.wikipedia.dataclient.mwapi.MwQueryResponse;
+import org.wikipedia.dataclient.mwapi.MwServiceError;
import org.wikipedia.dataclient.page.PageClient;
import org.wikipedia.dataclient.page.PageClientFactory;
import org.wikipedia.dataclient.page.PageLead;
@@ -46,6 +47,7 @@
import org.wikipedia.views.ObservableWebView;
import org.wikipedia.views.SwipeRefreshLayoutWithScroll;
+import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
@@ -548,12 +550,9 @@
if (pageLead.hasError()) {
ServiceError error = pageLead.getError();
if (error != null) {
- ApiException apiException = new ApiException(error.getTitle(),
error.getDetails());
- commonSectionFetchOnCatch(apiException, startSequenceNum);
+ commonSectionFetchOnCatch(new MwException((MwServiceError)
error), startSequenceNum);
} else {
- ApiException apiException
- = new ApiException("unknown", "unexpected pageLead
response");
- commonSectionFetchOnCatch(apiException, startSequenceNum);
+ commonSectionFetchOnCatch(new IOException("An unknown error
occurred."), startSequenceNum);
}
return;
}
diff --git a/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
b/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
index e01ec1a..e78cb01 100644
--- a/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
+++ b/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
@@ -4,10 +4,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import com.github.kevinsawicki.http.HttpRequest;
-
import org.json.JSONException;
-import org.mediawiki.api.json.ApiException;
import org.wikipedia.R;
import org.wikipedia.createaccount.CreateAccountException;
import org.wikipedia.dataclient.mwapi.MwException;
@@ -58,11 +55,7 @@
Throwable inner = ThrowableUtil.getInnermostThrowable(e);
AppError result;
// look at what kind of exception it is...
- if (inner instanceof ApiException) {
- // it's a well-formed error response from the server!
- result = new AppError(getApiError(context, (ApiException) inner),
- getApiErrorMessage(context, (ApiException)
inner));
- } else if (isNetworkError(e)) {
+ if (isNetworkError(e)) {
result = new
AppError(context.getString(R.string.error_network_error),
context.getString(R.string.format_error_server_message,
inner.getLocalizedMessage()));
@@ -94,39 +87,10 @@
}
private static boolean isNetworkError(@NonNull Throwable e) {
- return ThrowableUtil.throwableContainsException(e,
HttpRequest.HttpRequestException.class)
- || ThrowableUtil.throwableContainsException(e,
HttpStatusException.class)
+ return ThrowableUtil.throwableContainsException(e,
HttpStatusException.class)
|| ThrowableUtil.throwableContainsException(e,
UnknownHostException.class)
|| ThrowableUtil.throwableContainsException(e,
TimeoutException.class)
|| ThrowableUtil.throwableContainsException(e,
SSLException.class);
- }
-
- @NonNull @Deprecated
- private static String getApiError(@NonNull Context context, @NonNull
ApiException e) {
- String text;
- if ("missingtitle".equals(e.getCode()) ||
"invalidtitle".equals(e.getCode())) {
- text =
context.getResources().getString(R.string.page_does_not_exist_error);
- } else {
- text = context.getString(R.string.error_server_response);
- }
- return text;
- }
-
- // TODO: migrate this to ApiException.toString()
- @NonNull @Deprecated
- private static String getApiErrorMessage(@NonNull Context c, @NonNull
ApiException e) {
- String text;
- if (e.getInfo() != null) {
- // if we have an actual message from the server, then prefer it
- text = c.getString(R.string.format_error_server_message,
e.getInfo());
- } else if (e.getCode() != null) {
- // otherwise, just show the error code
- text = c.getString(R.string.format_error_server_code, e.getCode());
- } else {
- // if all else fails, show the message of the exception
- text = e.getMessage();
- }
- return text;
}
@Deprecated public static class AppError {
diff --git a/app/src/main/java/org/wikipedia/views/WikiErrorView.java
b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
index 7d35c00..a52ba93 100644
--- a/app/src/main/java/org/wikipedia/views/WikiErrorView.java
+++ b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
@@ -13,7 +13,6 @@
import android.widget.Space;
import android.widget.TextView;
-import org.mediawiki.api.json.ApiException;
import org.wikipedia.R;
import butterknife.BindView;
@@ -76,13 +75,6 @@
}
ErrorType getErrorType(@Nullable Throwable caught) {
- // apps-android-java-mwapi wraps all exceptions in an ApiException.
Strip it so we get
- // useful information about the underlying cause.
- // TODO: update when the apps-android-java-mwapi dependency is dropped
(T141127)
- if (caught instanceof ApiException) {
- caught = caught.getCause();
- }
-
if (caught != null && is404(caught)) {
return ErrorType.PAGE_MISSING;
}
diff --git a/app/src/test/java/org/wikipedia/test/TestApi.java
b/app/src/test/java/org/wikipedia/test/TestApi.java
deleted file mode 100644
index 0038ef9..0000000
--- a/app/src/test/java/org/wikipedia/test/TestApi.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.wikipedia.test;
-
-import android.support.annotation.NonNull;
-
-import org.mediawiki.api.json.Api;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class TestApi extends Api {
- @NonNull
- private final TestWebServer server;
-
- public TestApi(@NonNull TestWebServer server) {
- super("domain");
- this.server = server;
- }
-
- @Override
- public URL getApiUrl() {
- try {
- return new URL(server.getUrl("/"));
- } catch (MalformedURLException e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/settings.gradle b/settings.gradle
index d5d62df..12e495c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -20,4 +20,3 @@
}
include ':app'
-includeExists ':java-mwapi:lib', 'json'
--
To view, visit https://gerrit.wikimedia.org/r/361294
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Id8dde4eb22aa408e643a9b622dba654ffc5319f1
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yashasvi <[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: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits