Skip to content
This repository was archived by the owner on Oct 27, 2024. It is now read-only.

Commit 80411d7

Browse files
author
Ashwini Kumar
authored
Migration from RxJava 1 to RxJava 2 (#5)
1 parent d7e64e5 commit 80411d7

File tree

8 files changed

+60
-115
lines changed

8 files changed

+60
-115
lines changed

app/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ android {
2929

3030
packagingOptions {
3131
exclude 'META-INF/services/javax.annotation.processing.Processor'
32+
exclude 'META-INF/DEPENDENCIES'
33+
exclude 'META-INF/rxjava.properties'
3234
}
3335

3436
compileOptions {
@@ -52,8 +54,8 @@ dependencies {
5254
compile 'com.android.support:multidex:1.0.1'
5355

5456
// Rx
55-
compile 'io.reactivex:rxandroid:1.0.1'
56-
compile 'io.reactivex:rxjava:1.1.0'
57+
compile 'io.reactivex.rxjava2:rxjava:2.0.0'
58+
compile 'io.reactivex.rxjava2:rxandroid:2.0.0'
5759

5860
// Network
5961
compile 'com.squareup.okhttp3:okhttp:3.4.1'
@@ -72,7 +74,7 @@ dependencies {
7274
compile 'com.squareup.picasso:picasso:2.5.2'
7375
compile 'com.squareup.moshi:moshi:1.1.0'
7476
compile 'com.squareup.retrofit2:retrofit:2.1.0'
75-
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
77+
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
7678
compile 'com.squareup.retrofit2:converter-moshi:2.1.0'
7779
compile "com.squareup.okhttp3:okhttp:3.4.1"
7880
compile "com.squareup.okhttp3:logging-interceptor:3.4.1"

app/src/main/java/com/esoxjem/movieguide/details/IMovieDetailsEndpoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.esoxjem.movieguide.details;
22

3+
import io.reactivex.Observable;
34
import retrofit2.http.GET;
45
import retrofit2.http.Path;
5-
import rx.Observable;
66

77
/**
88
* @author Ashwini Kumar.

app/src/main/java/com/esoxjem/movieguide/details/MovieDetailsPresenter.java

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.esoxjem.movieguide.details;
22

3-
import android.support.annotation.NonNull;
4-
53
import com.esoxjem.movieguide.favorites.IFavoritesInteractor;
64
import com.esoxjem.movieguide.listing.Movie;
7-
import com.esoxjem.movieguide.util.RxUtils;
85

9-
import rx.Subscriber;
10-
import rx.Subscription;
11-
import rx.android.schedulers.AndroidSchedulers;
12-
import rx.schedulers.Schedulers;
6+
import io.reactivex.android.schedulers.AndroidSchedulers;
7+
import io.reactivex.disposables.CompositeDisposable;
8+
import io.reactivex.observers.DisposableObserver;
9+
import io.reactivex.schedulers.Schedulers;
1310

1411
/**
1512
* @author arun
@@ -18,14 +15,14 @@ public class MovieDetailsPresenter implements IMovieDetailsPresenter
1815
{
1916
private IMovieDetailsView view;
2017
private IFavoritesInteractor favoritesInteractor;
21-
private Subscription trailersSubscription;
22-
private Subscription reviewSubscription;
2318
private IMovieDetailsEndpoint movieDetailsEndpoint;
19+
private CompositeDisposable compositeDisposable;
2420

2521
public MovieDetailsPresenter(IMovieDetailsEndpoint movieDetailsEndpoint, IFavoritesInteractor favoritesInteractor)
2622
{
2723
this.movieDetailsEndpoint = movieDetailsEndpoint;
2824
this.favoritesInteractor = favoritesInteractor;
25+
compositeDisposable = new CompositeDisposable();
2926
}
3027

3128
@Override
@@ -38,7 +35,7 @@ public void setView(IMovieDetailsView view)
3835
public void destroy()
3936
{
4037
view = null;
41-
RxUtils.unsubscribe(trailersSubscription, reviewSubscription);
38+
compositeDisposable.clear();
4239
}
4340

4441
@Override
@@ -58,59 +55,65 @@ private boolean isViewAttached()
5855
@Override
5956
public void showTrailers(Movie movie)
6057
{
61-
trailersSubscription = movieDetailsEndpoint.getMovieTrailers(movie.getId())
58+
compositeDisposable.add(movieDetailsEndpoint.getMovieTrailers(movie.getId())
6259
.subscribeOn(Schedulers.io())
6360
.observeOn(AndroidSchedulers.mainThread())
64-
.subscribe(new Subscriber<VideoViewModel>()
61+
.subscribeWith(new DisposableObserver<VideoViewModel>()
6562
{
6663
@Override
67-
public void onCompleted()
64+
public void onNext(VideoViewModel videoViewModel)
6865
{
66+
if (isViewAttached())
67+
{
68+
view.showTrailers(videoViewModel.getVideos());
69+
}
6970
}
7071

7172
@Override
7273
public void onError(Throwable e)
7374
{
75+
7476
}
7577

7678
@Override
77-
public void onNext(@NonNull VideoViewModel videoViewModel)
79+
public void onComplete()
7880
{
79-
if (isViewAttached())
80-
{
81-
view.showTrailers(videoViewModel.getVideos());
82-
}
81+
8382
}
84-
});
83+
}));
8584
}
8685

86+
8787
@Override
8888
public void showReviews(Movie movie)
8989
{
90-
reviewSubscription = movieDetailsEndpoint.getMovieReviews(movie.getId())
90+
compositeDisposable.add(movieDetailsEndpoint.getMovieReviews(movie.getId())
9191
.subscribeOn(Schedulers.io())
9292
.observeOn(AndroidSchedulers.mainThread())
93-
.subscribe(new Subscriber<ReviewViewModel>()
93+
.subscribeWith(new DisposableObserver<ReviewViewModel>()
9494
{
9595
@Override
96-
public void onCompleted()
96+
public void onNext(ReviewViewModel reviewViewModel)
9797
{
98+
if (isViewAttached())
99+
{
100+
view.showReviews(reviewViewModel.getReviews());
101+
}
98102
}
99103

100104
@Override
101105
public void onError(Throwable e)
102106
{
107+
103108
}
104109

105110
@Override
106-
public void onNext(@NonNull ReviewViewModel reviewViewModel)
111+
public void onComplete()
107112
{
108-
if (isViewAttached())
109-
{
110-
view.showReviews(reviewViewModel.getReviews());
111-
}
113+
112114
}
113-
});
115+
}));
116+
114117
}
115118

116119
@Override

app/src/main/java/com/esoxjem/movieguide/listing/IMovieListingEndpoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.esoxjem.movieguide.listing;
22

3+
import io.reactivex.Observable;
34
import retrofit2.http.GET;
4-
import rx.Observable;
55

66
/**
77
* @author Ashwini Kumar.

app/src/main/java/com/esoxjem/movieguide/listing/IMoviesListingInteractor.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/src/main/java/com/esoxjem/movieguide/listing/MoviesListingPresenter.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,19 @@
33
import com.esoxjem.movieguide.favorites.IFavoritesInteractor;
44
import com.esoxjem.movieguide.sorting.SortType;
55
import com.esoxjem.movieguide.sorting.SortingOptionStore;
6-
import com.esoxjem.movieguide.util.RxUtils;
76

8-
import rx.Subscriber;
9-
import rx.Subscription;
10-
import rx.android.schedulers.AndroidSchedulers;
11-
import rx.schedulers.Schedulers;
7+
import io.reactivex.android.schedulers.AndroidSchedulers;
8+
import io.reactivex.disposables.CompositeDisposable;
9+
import io.reactivex.observers.DisposableObserver;
10+
import io.reactivex.schedulers.Schedulers;
1211

1312
/**
1413
* @author arun
1514
*/
1615
public class MoviesListingPresenter implements IMoviesListingPresenter
1716
{
1817
private IMoviesListingView view;
19-
private Subscription popularMoviesSubscription;
20-
private Subscription highestRatedMoviesSubscription;
18+
private CompositeDisposable compositeDisposable;
2119
private IMovieListingEndpoint movieListingEndpoint;
2220
private SortingOptionStore sortingOptionStore;
2321
private IFavoritesInteractor favoritesInteractor;
@@ -27,6 +25,7 @@ public MoviesListingPresenter(IMovieListingEndpoint movieListingEndpoint, Sortin
2725
this.movieListingEndpoint = movieListingEndpoint;
2826
this.sortingOptionStore = sortingOptionStore;
2927
this.favoritesInteractor = favoritesInteractor;
28+
compositeDisposable = new CompositeDisposable();
3029
}
3130

3231
@Override
@@ -39,7 +38,7 @@ public void setView(IMoviesListingView view)
3938
public void destroy()
4039
{
4140
view = null;
42-
RxUtils.unsubscribe(popularMoviesSubscription, highestRatedMoviesSubscription);
41+
compositeDisposable.clear();
4342
}
4443

4544
@Override
@@ -60,19 +59,19 @@ public void displayMovies()
6059

6160
private void loadPopularMovies()
6261
{
63-
popularMoviesSubscription = movieListingEndpoint.fetchPopularMovies()
62+
compositeDisposable.add(movieListingEndpoint.fetchPopularMovies()
6463
.subscribeOn(Schedulers.io())
6564
.observeOn(AndroidSchedulers.mainThread())
66-
.doOnSubscribe(() -> {
65+
.doOnSubscribe(disposable -> {
6766
if (isViewAttached())
6867
{
6968
view.loadingStarted();
7069
}
7170
})
72-
.subscribe(new Subscriber<MovieViewModel>()
71+
.subscribeWith(new DisposableObserver<MovieViewModel>()
7372
{
7473
@Override
75-
public void onCompleted()
74+
public void onComplete()
7675
{
7776

7877
}
@@ -88,24 +87,24 @@ public void onNext(MovieViewModel movieViewModel)
8887
{
8988
view.showMovies(movieViewModel.getMovies());
9089
}
91-
});
90+
}));
9291
}
9392

9493
private void loadHighestRatedMovies()
9594
{
96-
highestRatedMoviesSubscription = movieListingEndpoint.fetchHighestRatedMovies()
95+
compositeDisposable.add(movieListingEndpoint.fetchHighestRatedMovies()
9796
.subscribeOn(Schedulers.io())
9897
.observeOn(AndroidSchedulers.mainThread())
99-
.doOnSubscribe(() -> {
98+
.doOnSubscribe(disposable -> {
10099
if (isViewAttached())
101100
{
102101
view.loadingStarted();
103102
}
104103
})
105-
.subscribe(new Subscriber<MovieViewModel>()
104+
.subscribeWith(new DisposableObserver<MovieViewModel>()
106105
{
107106
@Override
108-
public void onCompleted()
107+
public void onComplete()
109108
{
110109

111110
}
@@ -121,7 +120,7 @@ public void onNext(MovieViewModel movieViewModel)
121120
{
122121
view.showMovies(movieViewModel.getMovies());
123122
}
124-
});
123+
}));
125124
}
126125

127126
private void loadFavouriteMovies()

app/src/main/java/com/esoxjem/movieguide/network/NetworkModule.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.franmontiel.persistentcookiejar.PersistentCookieJar;
66
import com.franmontiel.persistentcookiejar.cache.SetCookieCache;
77
import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor;
8+
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
89

910
import java.io.File;
1011
import java.net.CookieHandler;
@@ -16,14 +17,13 @@
1617

1718
import dagger.Module;
1819
import dagger.Provides;
20+
import io.reactivex.schedulers.Schedulers;
1921
import okhttp3.Cache;
2022
import okhttp3.CookieJar;
2123
import okhttp3.OkHttpClient;
2224
import okhttp3.logging.HttpLoggingInterceptor;
2325
import retrofit2.Retrofit;
24-
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
2526
import retrofit2.converter.moshi.MoshiConverterFactory;
26-
import rx.schedulers.Schedulers;
2727

2828
/**
2929
* @author Ashwini Kumar.
@@ -90,14 +90,14 @@ Cache provideCache(Context context)
9090

9191
@Provides
9292
@Singleton
93-
RxJavaCallAdapterFactory provideRxJavaCallAdapterFactory()
93+
RxJava2CallAdapterFactory provideRxJavaCallAdapterFactory()
9494
{
95-
return RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());
95+
return RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io());
9696
}
9797

9898
@Provides
9999
@Singleton
100-
Retrofit provideRetrofit(OkHttpClient okHttpClient, RxJavaCallAdapterFactory rxAdapter)
100+
Retrofit provideRetrofit(OkHttpClient okHttpClient, RxJava2CallAdapterFactory rxAdapter)
101101
{
102102
return new Retrofit.Builder()
103103
.baseUrl(BASE_URL)

app/src/main/java/com/esoxjem/movieguide/util/RxUtils.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)