diff --git a/app/build.gradle b/app/build.gradle index a88650e..65ec764 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -109,7 +109,6 @@ dependencies { compile libraries.rxJava compile libraries.okHttp - compile libraries.okHttpLoggingInterceptor compile libraries.retrofit compile libraries.retrofitJacksonConverter compile libraries.retrofitRxJavaAdapter @@ -125,6 +124,7 @@ dependencies { compile libraries.butterKnife compile libraries.picasso + compile libraries.picassoOkHttpDownloader compile libraries.timber // Analytics. Why? To make app more real. @@ -132,6 +132,7 @@ dependencies { compile libraries.yandexAppMetrica // Developer tools (Developer Settings) + debugCompile libraries.okHttpLoggingInterceptor debugCompile libraries.stetho debugCompile libraries.stethoOkHttp debugCompile libraries.leakCanary diff --git a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettings.java b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettings.java index 637d58d..f615127 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettings.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettings.java @@ -3,7 +3,7 @@ import android.content.SharedPreferences; import android.support.annotation.NonNull; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor; import timber.log.Timber; diff --git a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImpl.java b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImpl.java index eee012f..a6c1ec4 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImpl.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImpl.java @@ -7,13 +7,13 @@ import com.artemzin.qualitymatters.QualityMattersApp; import com.codemonkeylabs.fpslibrary.TinyDancer; import com.facebook.stetho.Stetho; -import com.facebook.stetho.okhttp.StethoInterceptor; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import com.facebook.stetho.okhttp3.StethoInterceptor; import java.util.concurrent.atomic.AtomicBoolean; import hu.supercluster.paperwork.Paperwork; +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; import timber.log.Timber; import static android.view.Gravity.START; diff --git a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModule.java b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModule.java index 2b886d4..83e1cb1 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModule.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModule.java @@ -7,8 +7,8 @@ import com.artemzin.qualitymatters.ui.other.ViewModifier; import com.artemzin.qualitymatters.ui.presenters.DeveloperSettingsPresenter; import com.github.pedrovgs.lynx.LynxConfig; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; import javax.inject.Named; import javax.inject.Singleton; diff --git a/app/src/debug/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java b/app/src/debug/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java new file mode 100644 index 0000000..2684b8a --- /dev/null +++ b/app/src/debug/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java @@ -0,0 +1,40 @@ +package com.artemzin.qualitymatters.network; + +import android.support.annotation.NonNull; + +import com.facebook.stetho.okhttp3.StethoInterceptor; + +import java.util.List; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import okhttp3.Interceptor; +import okhttp3.logging.HttpLoggingInterceptor; +import timber.log.Timber; + +import static java.util.Collections.singletonList; + +/** + * Provides OkHttp interceptors for debug build. + */ +@Module +public class OkHttpInterceptorsModule { + + // Provided as separate dependency for Developer Settings to be able to change HTTP log level at runtime. + @Provides @Singleton @NonNull + public HttpLoggingInterceptor provideHttpLoggingInterceptor() { + return new HttpLoggingInterceptor(message -> Timber.d(message)); + } + + @Provides @OkHttpInterceptors @Singleton @NonNull + public List provideOkHttpInterceptors(@NonNull HttpLoggingInterceptor httpLoggingInterceptor) { + return singletonList(httpLoggingInterceptor); + } + + @Provides @OkHttpNetworkInterceptors @Singleton @NonNull + public List provideOkHttpNetworkInterceptors() { + return singletonList(new StethoInterceptor()); + } +} diff --git a/app/src/debug/java/com/artemzin/qualitymatters/ui/fragments/DeveloperSettingsFragment.java b/app/src/debug/java/com/artemzin/qualitymatters/ui/fragments/DeveloperSettingsFragment.java index 3b6e155..e21fa2b 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/ui/fragments/DeveloperSettingsFragment.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/ui/fragments/DeveloperSettingsFragment.java @@ -21,7 +21,7 @@ import com.artemzin.qualitymatters.ui.views.DeveloperSettingsView; import com.github.pedrovgs.lynx.LynxActivity; import com.github.pedrovgs.lynx.LynxConfig; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor; import java.util.ArrayList; import java.util.List; diff --git a/app/src/debug/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenter.java b/app/src/debug/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenter.java index 4ee7195..c7cdf8d 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenter.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenter.java @@ -5,7 +5,7 @@ import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModelImpl; import com.artemzin.qualitymatters.models.AnalyticsModel; import com.artemzin.qualitymatters.ui.views.DeveloperSettingsView; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor; public class DeveloperSettingsPresenter extends Presenter { diff --git a/app/src/debug/java/com/artemzin/qualitymatters/ui/views/DeveloperSettingsView.java b/app/src/debug/java/com/artemzin/qualitymatters/ui/views/DeveloperSettingsView.java index 2be52ac..09e1da4 100644 --- a/app/src/debug/java/com/artemzin/qualitymatters/ui/views/DeveloperSettingsView.java +++ b/app/src/debug/java/com/artemzin/qualitymatters/ui/views/DeveloperSettingsView.java @@ -3,7 +3,7 @@ import android.support.annotation.NonNull; import com.artemzin.qualitymatters.performance.AnyThread; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor; public interface DeveloperSettingsView { diff --git a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImplTest.java b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImplTest.java index a1d8529..2faf022 100644 --- a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImplTest.java +++ b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsModelImplTest.java @@ -3,8 +3,6 @@ import android.support.annotation.NonNull; import com.artemzin.qualitymatters.QualityMattersApp; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; import org.junit.Before; import org.junit.Test; @@ -13,6 +11,8 @@ import java.util.Date; import hu.supercluster.paperwork.Paperwork; +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsTest.java b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsTest.java index 3348e0b..65324f9 100644 --- a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsTest.java +++ b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/developer_settings/DeveloperSettingsTest.java @@ -3,13 +3,14 @@ import android.support.annotation.NonNull; import com.artemzin.qualitymatters.QualityMattersRobolectricUnitTestRunner; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; +import okhttp3.logging.HttpLoggingInterceptor; + import static android.content.Context.MODE_PRIVATE; import static org.assertj.core.api.Assertions.assertThat; diff --git a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenterTest.java b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenterTest.java index e8c23b5..b8ef457 100644 --- a/app/src/debugUnitTests/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenterTest.java +++ b/app/src/debugUnitTests/java/com/artemzin/qualitymatters/ui/presenters/DeveloperSettingsPresenterTest.java @@ -5,11 +5,12 @@ import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModelImpl; import com.artemzin.qualitymatters.models.AnalyticsModel; import com.artemzin.qualitymatters.ui.views.DeveloperSettingsView; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; import org.junit.Before; import org.junit.Test; +import okhttp3.logging.HttpLoggingInterceptor; + import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; diff --git a/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/rules/MockWebServerRule.java b/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/rules/MockWebServerRule.java index 19bfeb0..5e7ceb4 100644 --- a/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/rules/MockWebServerRule.java +++ b/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/rules/MockWebServerRule.java @@ -3,7 +3,6 @@ import android.support.annotation.NonNull; import com.artemzin.qualitymatters.functional_tests.TestUtils; -import com.squareup.okhttp.mockwebserver.MockWebServer; import org.junit.rules.TestRule; import org.junit.runner.Description; @@ -11,6 +10,8 @@ import java.lang.reflect.Method; +import okhttp3.mockwebserver.MockWebServer; + /** * JUnit test rule for mocking web server! */ diff --git a/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/tests/ItemsTest.java b/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/tests/ItemsTest.java index e50679a..44521d8 100644 --- a/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/tests/ItemsTest.java +++ b/app/src/functionalTests/java/com/artemzin/qualitymatters/functional_tests/tests/ItemsTest.java @@ -11,8 +11,6 @@ import com.artemzin.qualitymatters.functional_tests.rules.NeedsMockWebServer; import com.artemzin.qualitymatters.functional_tests.screens.ItemsScreen; import com.artemzin.qualitymatters.ui.activities.MainActivity; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; import org.junit.Before; import org.junit.Rule; @@ -20,6 +18,9 @@ import org.junit.rules.RuleChain; import org.junit.runner.RunWith; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; + @RunWith(AndroidJUnit4.class) public class ItemsTest { diff --git a/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/HttpCodes.java b/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/HttpCodes.java index bba7a8f..8cb7e2f 100644 --- a/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/HttpCodes.java +++ b/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/HttpCodes.java @@ -19,7 +19,7 @@ public class HttpCodes { 404, 405, 406, - 408, + // 408, OkHttp will do silent retry, so either we need to test that separately or be able to include it in generic tests somehow. 409, 410, 411, diff --git a/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/QualityMattersRestApiIntegrationTest.java b/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/QualityMattersRestApiIntegrationTest.java index 5a56fe8..e083739 100644 --- a/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/QualityMattersRestApiIntegrationTest.java +++ b/app/src/integrationTests/java/com/artemzin/qualitymatters/integration_tests/api/QualityMattersRestApiIntegrationTest.java @@ -5,8 +5,6 @@ import com.artemzin.qualitymatters.QualityMattersIntegrationRobolectricTestRunner; import com.artemzin.qualitymatters.api.QualityMattersRestApi; import com.artemzin.qualitymatters.api.entities.Item; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; import org.junit.After; import org.junit.Before; @@ -16,7 +14,9 @@ import java.io.IOException; import java.util.List; -import retrofit.HttpException; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import retrofit2.adapter.rxjava.HttpException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; diff --git a/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java b/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java index 8930c06..2f22651 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java +++ b/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java @@ -10,6 +10,7 @@ import com.artemzin.qualitymatters.developer_settings.LeakCanaryProxy; import com.artemzin.qualitymatters.models.ModelsModule; import com.artemzin.qualitymatters.network.NetworkModule; +import com.artemzin.qualitymatters.network.OkHttpInterceptorsModule; import com.artemzin.qualitymatters.performance.AsyncJobsModule; import com.artemzin.qualitymatters.performance.AsyncJobsObserver; import com.artemzin.qualitymatters.ui.activities.MainActivity; @@ -24,6 +25,7 @@ @Component(modules = { ApplicationModule.class, NetworkModule.class, + OkHttpInterceptorsModule.class, ApiModule.class, AsyncJobsModule.class, ModelsModule.class, diff --git a/app/src/main/java/com/artemzin/qualitymatters/ApplicationModule.java b/app/src/main/java/com/artemzin/qualitymatters/ApplicationModule.java index 42478b4..3b00d23 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/ApplicationModule.java +++ b/app/src/main/java/com/artemzin/qualitymatters/ApplicationModule.java @@ -5,8 +5,7 @@ import android.support.annotation.NonNull; import com.fasterxml.jackson.databind.ObjectMapper; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.picasso.OkHttpDownloader; +import com.jakewharton.picasso.OkHttp3Downloader; import com.squareup.picasso.Picasso; import javax.inject.Named; @@ -14,6 +13,7 @@ import dagger.Module; import dagger.Provides; +import okhttp3.OkHttpClient; @Module public class ApplicationModule { @@ -45,7 +45,7 @@ public Handler provideMainThreadHandler() { @Provides @NonNull @Singleton public Picasso providePicasso(@NonNull QualityMattersApp qualityMattersApp, @NonNull OkHttpClient okHttpClient) { return new Picasso.Builder(qualityMattersApp) - .downloader(new OkHttpDownloader(okHttpClient)) + .downloader(new OkHttp3Downloader(okHttpClient)) .build(); } } diff --git a/app/src/main/java/com/artemzin/qualitymatters/api/ApiModule.java b/app/src/main/java/com/artemzin/qualitymatters/api/ApiModule.java index 6cf1ecb..8bc324c 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/api/ApiModule.java +++ b/app/src/main/java/com/artemzin/qualitymatters/api/ApiModule.java @@ -4,15 +4,15 @@ import com.artemzin.qualitymatters.BuildConfig; import com.fasterxml.jackson.databind.ObjectMapper; -import com.squareup.okhttp.OkHttpClient; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -import retrofit.JacksonConverterFactory; -import retrofit.Retrofit; -import retrofit.RxJavaCallAdapterFactory; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; +import retrofit2.converter.jackson.JacksonConverterFactory; @Module public class ApiModule { @@ -31,17 +31,13 @@ public ChangeableBaseUrl provideChangeableBaseUrl() { @Provides @NonNull @Singleton public QualityMattersRestApi provideQualityMattersApi(@NonNull OkHttpClient okHttpClient, @NonNull ObjectMapper objectMapper, @NonNull ChangeableBaseUrl changeableBaseUrl) { - final Retrofit.Builder builder = new Retrofit.Builder() + return new Retrofit.Builder() .baseUrl(changeableBaseUrl) .client(okHttpClient) .addConverterFactory(JacksonConverterFactory.create(objectMapper)) - .addCallAdapterFactory(RxJavaCallAdapterFactory.create()); - - // Fail early: check Retrofit configuration at creation time - if (BuildConfig.DEBUG) { - builder.validateEagerly(); - } - - return builder.build().create(QualityMattersRestApi.class); + .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) + .validateEagerly(BuildConfig.DEBUG) // Fail early: check Retrofit configuration at creation time in Debug build. + .build() + .create(QualityMattersRestApi.class); } } diff --git a/app/src/main/java/com/artemzin/qualitymatters/api/ChangeableBaseUrl.java b/app/src/main/java/com/artemzin/qualitymatters/api/ChangeableBaseUrl.java index ca0de31..891e205 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/api/ChangeableBaseUrl.java +++ b/app/src/main/java/com/artemzin/qualitymatters/api/ChangeableBaseUrl.java @@ -2,11 +2,10 @@ import android.support.annotation.NonNull; -import com.squareup.okhttp.HttpUrl; - import java.util.concurrent.atomic.AtomicReference; -import retrofit.BaseUrl; +import okhttp3.HttpUrl; +import retrofit2.BaseUrl; /** * Such implementation allows us easily change base url in the integration and functional tests! diff --git a/app/src/main/java/com/artemzin/qualitymatters/api/QualityMattersRestApi.java b/app/src/main/java/com/artemzin/qualitymatters/api/QualityMattersRestApi.java index 5b39975..a3fa1f2 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/api/QualityMattersRestApi.java +++ b/app/src/main/java/com/artemzin/qualitymatters/api/QualityMattersRestApi.java @@ -6,7 +6,7 @@ import java.util.List; -import retrofit.http.GET; +import retrofit2.http.GET; import rx.Single; public interface QualityMattersRestApi { diff --git a/app/src/main/java/com/artemzin/qualitymatters/network/NetworkModule.java b/app/src/main/java/com/artemzin/qualitymatters/network/NetworkModule.java index 48ab309..896d972 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/network/NetworkModule.java +++ b/app/src/main/java/com/artemzin/qualitymatters/network/NetworkModule.java @@ -2,33 +2,31 @@ import android.support.annotation.NonNull; -import com.artemzin.qualitymatters.BuildConfig; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import java.util.List; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -import timber.log.Timber; - -import static com.squareup.okhttp.logging.HttpLoggingInterceptor.Level.BODY; -import static com.squareup.okhttp.logging.HttpLoggingInterceptor.Level.NONE; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; @Module public class NetworkModule { @Provides @NonNull @Singleton - public OkHttpClient provideOkHttpClient(@NonNull HttpLoggingInterceptor httpLoggingInterceptor) { - OkHttpClient okHttpClient = new OkHttpClient(); - okHttpClient.interceptors().add(httpLoggingInterceptor); - return okHttpClient; - } + public OkHttpClient provideOkHttpClient(@OkHttpInterceptors @NonNull List interceptors, + @OkHttpNetworkInterceptors @NonNull List networkInterceptors) { + final OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder(); - @Provides @NonNull @Singleton - public HttpLoggingInterceptor provideHttpLoggingInterceptor() { - HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(message -> Timber.d(message)); - httpLoggingInterceptor.setLevel(BuildConfig.DEBUG ? BODY : NONE); - return httpLoggingInterceptor; + for (Interceptor interceptor : interceptors) { + okHttpBuilder.addInterceptor(interceptor); + } + + for (Interceptor networkInterceptor : networkInterceptors) { + okHttpBuilder.addNetworkInterceptor(networkInterceptor); + } + + return okHttpBuilder.build(); } } diff --git a/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpInterceptors.java b/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpInterceptors.java new file mode 100644 index 0000000..5b4a762 --- /dev/null +++ b/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpInterceptors.java @@ -0,0 +1,14 @@ +package com.artemzin.qualitymatters.network; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Documented +@Qualifier +@Retention(RUNTIME) +public @interface OkHttpInterceptors { +} diff --git a/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpNetworkInterceptors.java b/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpNetworkInterceptors.java new file mode 100644 index 0000000..2f90cfd --- /dev/null +++ b/app/src/main/java/com/artemzin/qualitymatters/network/OkHttpNetworkInterceptors.java @@ -0,0 +1,14 @@ +package com.artemzin.qualitymatters.network; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Documented +@Qualifier +@Retention(RUNTIME) +public @interface OkHttpNetworkInterceptors { +} diff --git a/app/src/release/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java b/app/src/release/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java new file mode 100644 index 0000000..c05ad27 --- /dev/null +++ b/app/src/release/java/com/artemzin/qualitymatters/network/OkHttpInterceptorsModule.java @@ -0,0 +1,30 @@ +package com.artemzin.qualitymatters.network; + +import android.support.annotation.NonNull; + +import java.util.List; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import okhttp3.Interceptor; + +import static java.util.Collections.emptyList; + +/** + * Provides OkHttp interceptors for release build. + */ +@Module +public class OkHttpInterceptorsModule { + + @Provides @OkHttpInterceptors @Singleton @NonNull + public List provideOkHttpInterceptors() { + return emptyList(); + } + + @Provides @OkHttpNetworkInterceptors @Singleton @NonNull + public List provideOkHttpNetworkInterceptors() { + return emptyList(); + } +} diff --git a/app/src/unitTests/java/com/artemzin/qualitymatters/api/ChangeableBaseUrlTest.java b/app/src/unitTests/java/com/artemzin/qualitymatters/api/ChangeableBaseUrlTest.java index ca259b5..6c9436e 100644 --- a/app/src/unitTests/java/com/artemzin/qualitymatters/api/ChangeableBaseUrlTest.java +++ b/app/src/unitTests/java/com/artemzin/qualitymatters/api/ChangeableBaseUrlTest.java @@ -1,9 +1,9 @@ package com.artemzin.qualitymatters.api; -import com.squareup.okhttp.HttpUrl; - import org.junit.Test; +import okhttp3.HttpUrl; + import static org.assertj.core.api.Assertions.assertThat; public class ChangeableBaseUrlTest { diff --git a/dependencies.gradle b/dependencies.gradle index efede1d..107ae03 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,38 +1,39 @@ ext.versions = [ - code : 1, - name : '1.0', + code : 1, + name : '1.0', - minSdk : 16, - targetSdk : 23, - compileSdk : 23, - buildTools : '23.0.2', + minSdk : 16, + targetSdk : 23, + compileSdk : 23, + buildTools : '23.0.2', - dagger : '2.0.2', - javaxInject : '1', - javaxAnnotationApi: '1.2', - rxJava : '1.1.0', - supportLibs : '23.1.1', - okHttp : '2.7.2', - retrofit : '2.0.0-beta2', - jackson : '2.6.3', - autoValue : '1.1', - butterKnife : '7.0.1', - picasso : '2.5.2', - timber : '4.1.0', - espresso : '2.2.1', - stetho : '1.2.0', - leakCanary : '1.3.1', - tinyDancer : '0.0.8', - yandexAppMetrica : '2.30', - paperwork : '1.2.1', - lynx : '1.6', + dagger : '2.0.2', + javaxInject : '1', + javaxAnnotationApi : '1.2', + rxJava : '1.1.0', + supportLibs : '23.1.1', + okHttp : '3.1.2', + retrofit : '2.0.0-beta4', + jackson : '2.6.3', + autoValue : '1.1', + butterKnife : '7.0.1', + picasso : '2.5.2', + picassoOkHttpDownloader: '1.0.2', + timber : '4.1.0', + espresso : '2.2.1', + stetho : '1.3.0', + leakCanary : '1.3.1', + tinyDancer : '0.0.8', + yandexAppMetrica : '2.30', + paperwork : '1.2.1', + lynx : '1.6', - junit : '4.12', - robolectric : '3.0', - assertJ : '1.7.1', - equalsVerifier : '1.7.5', - mockito : '1.10.19', - supportTestRunner : '0.4.1', + junit : '4.12', + robolectric : '3.0', + assertJ : '1.7.1', + equalsVerifier : '1.7.5', + mockito : '1.10.19', + supportTestRunner : '0.4.1', ] ext.libraries = [ @@ -43,11 +44,11 @@ ext.libraries = [ rxJava : "io.reactivex:rxjava:$versions.rxJava", - okHttp : "com.squareup.okhttp:okhttp:$versions.okHttp", - okHttpLoggingInterceptor: "com.squareup.okhttp:logging-interceptor:$versions.okHttp", - retrofit : "com.squareup.retrofit:retrofit:$versions.retrofit", - retrofitJacksonConverter: "com.squareup.retrofit:converter-jackson:$versions.retrofit", - retrofitRxJavaAdapter : "com.squareup.retrofit:adapter-rxjava:$versions.retrofit", + okHttp : "com.squareup.okhttp3:okhttp:$versions.okHttp", + okHttpLoggingInterceptor: "com.squareup.okhttp3:logging-interceptor:$versions.okHttp", + retrofit : "com.squareup.retrofit2:retrofit:$versions.retrofit", + retrofitJacksonConverter: "com.squareup.retrofit2:converter-jackson:$versions.retrofit", + retrofitRxJavaAdapter : "com.squareup.retrofit2:adapter-rxjava:$versions.retrofit", jacksonDataBind : "com.fasterxml.jackson.core:jackson-databind:$versions.jackson", autoValue : "com.google.auto.value:auto-value:$versions.autoValue", @@ -60,6 +61,7 @@ ext.libraries = [ butterKnife : "com.jakewharton:butterknife:$versions.butterKnife", picasso : "com.squareup.picasso:picasso:$versions.picasso", + picassoOkHttpDownloader : "com.jakewharton.picasso:picasso2-okhttp3-downloader:$versions.picassoOkHttpDownloader", timber : "com.jakewharton.timber:timber:$versions.timber", // Analytics https://tech.yandex.com/metrica-mobile-sdk/ @@ -67,7 +69,7 @@ ext.libraries = [ // Developer Tools stetho : "com.facebook.stetho:stetho:$versions.stetho", - stethoOkHttp : "com.facebook.stetho:stetho-okhttp:$versions.stetho", + stethoOkHttp : "com.facebook.stetho:stetho-okhttp3:$versions.stetho", leakCanary : "com.squareup.leakcanary:leakcanary-android:$versions.leakCanary", tinyDancer : "com.github.brianPlummer:tinydancer:$versions.tinyDancer", paperworkPlugin : "hu.supercluster:paperwork-plugin:$versions.paperwork", @@ -79,7 +81,7 @@ ext.libraries = [ robolectric : "org.robolectric:robolectric:$versions.robolectric", assertJ : "org.assertj:assertj-core:$versions.assertJ", equalsVerifier : "nl.jqno.equalsverifier:equalsverifier:$versions.equalsVerifier", - okHttpMockWebServer : "com.squareup.okhttp:mockwebserver:$versions.okHttp", + okHttpMockWebServer : "com.squareup.okhttp3:mockwebserver:$versions.okHttp", mockitoCore : "org.mockito:mockito-core:$versions.mockito", supportTestRunner : "com.android.support.test:runner:$versions.supportTestRunner", supportTestRules : "com.android.support.test:rules:$versions.supportTestRunner",