Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to RxJava2 #42

Merged
merged 6 commits into from
Jul 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ android:
components:
- tools
- platform-tools
- build-tools-25.0.2
- build-tools-25.0.3
- android-25
- extra-android-m2repository
- extra-android-support
Expand Down
6 changes: 3 additions & 3 deletions gradle/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ext.snapshotRepositoryUrl = 'https://oss.sonatype.org/content/repositories/snaps

ext.androidConfig = [
compileSdkVersion: 25,
buildToolsVersion: '25.0.2',
buildToolsVersion: '25.0.3',
minSdkVersion : 16,
targetSdkVersion : 25
]
Expand All @@ -26,8 +26,8 @@ ext.dep = [
findBugs : 'com.google.code.findbugs:jsr305:3.0.0',
gradleNexus : 'com.bmuschko:gradle-nexus-plugin:2.3.1',
javaPoet : 'com.squareup:javapoet:1.8.0',
rxAndroid : 'io.reactivex:rxandroid:1.2.1',
rxJava : 'io.reactivex:rxjava:1.2.9',
rxAndroid : 'io.reactivex.rxjava2:rxandroid:2.0.1',
rxJava : 'io.reactivex.rxjava2:rxjava:2.1.0',

//Tests
junit : 'junit:junit:4.12',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,20 @@

import javax.annotation.Nullable;

import rx.Observable;
import rx.Observer;
import io.reactivex.ObservableTransformer;
import io.reactivex.Observer;

/**
* TODO
* Manges unlocking, locking, and destroying observables based on the lifecycle of an activity or
* fragment. An Activity or fragment must call:
* <ul>
* <li>{@link #onCreate(ObservableManager, Bundle, Object)}</li>
* <li>{@link #onResume()}</li>
* <li>{@link #onPause()}</li>
* <li>{@link #onDestroy(Activity)}</li>
* <li>{@link #onSaveInstanceState(Bundle)}</li>
* </ul>
* in corresponding methods.
*/
@SuppressWarnings("WeakerAccess")
public class GroupLifecycleManager {
Expand Down Expand Up @@ -87,15 +96,15 @@ public ObservableGroup group() {
* Calls {@link ObservableGroup#transform(Observer)} for the group managed by
* this instance.
*/
public <T> Observable.Transformer<? super T, T> transform(Observer<? super T> observer) {
public <T> ObservableTransformer<? super T, T> transform(Observer<? super T> observer) {
return group.transform(observer);
}

/**
* Calls {@link ObservableGroup#transform(Observer, String)} for the group managed by
* this instance.
*/
public <T> Observable.Transformer<? super T, T> transform(Observer<? super T> observer,
public <T> ObservableTransformer<? super T, T> transform(Observer<? super T> observer,
String observableTag) {
return group.transform(observer, observableTag);
}
Expand Down Expand Up @@ -157,7 +166,7 @@ private void onDestroy(boolean isFinishing) {
observableManager.destroy(group);
} else {
group().removeNonResubscribableObservers();
group.unsubscribe();
group.dispose();
}
}

Expand Down
15 changes: 0 additions & 15 deletions rxgroups-android/src/test/java/com/airbnb/rxgroups/BaseTest.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;

import rx.Observer;
import rx.schedulers.Schedulers;
import rx.schedulers.TestScheduler;
import rx.subjects.PublishSubject;
import rx.subjects.TestSubject;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.observers.TestObserver;
import io.reactivex.subjects.PublishSubject;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
Expand All @@ -28,9 +27,8 @@

@Config(sdk = Build.VERSION_CODES.LOLLIPOP, constants = BuildConfig.class)
@RunWith(RobolectricGradleTestRunner.class)
public class GroupLifecycleManagerTest extends BaseTest {
private final TestScheduler scheduler = Schedulers.test();
private final TestSubject<String> testSubject = TestSubject.create(scheduler);
public class GroupLifecycleManagerTest {
private final PublishSubject<String> testSubject = PublishSubject.create();
private final ObservableManager observableManager = mock(ObservableManager.class);
private final ObservableGroup group = mock(ObservableGroup.class);
private final TestTarget target = new TestTarget();
Expand All @@ -45,14 +43,18 @@ static class TestTarget {
return "bar";
}

@Override public void onCompleted() {
@Override public void onComplete() {

}

@Override public void onError(Throwable e) {

}

@Override public void onSubscribe(@NonNull Disposable d) {

}

@Override public void onNext(Object o) {

}
Expand Down Expand Up @@ -92,7 +94,7 @@ public void testSubscribeInvalidTargetNoException() {
public void testSubscribeNullTargetFails() {
when(observableManager.newGroup()).thenReturn(group);
GroupLifecycleManager groupLifecycleManager = GroupLifecycleManager.onCreate
(observableManager, null, null);
(observableManager, null, null);

groupLifecycleManager.initializeAutoTaggingAndResubscription(null);
}
Expand All @@ -105,8 +107,8 @@ public void testDestroyFinishingActivity() {
when(group.hasObservables(target.taggedObserver)).thenReturn(true);
when(group.observable(target.taggedObserver)).thenReturn(testSubject);

GroupLifecycleManager lifecycleManager = GroupLifecycleManager.onCreate
(observableManager, null, target);
GroupLifecycleManager lifecycleManager
= GroupLifecycleManager.onCreate(observableManager, null, target);

Activity activity = mock(Activity.class);
when(activity.isFinishing()).thenReturn(true);
Expand All @@ -121,21 +123,10 @@ public void testDestroyFinishingActivity() {
GroupLifecycleManager lifecycleManager = GroupLifecycleManager.onCreate
(observableManager, null, target);

Observer nonResubscribableObserver = new Observer<Object>() {
@Override public void onCompleted() {

}

@Override public void onError(Throwable e) {

}

@Override public void onNext(Object o) {

}
};
lifecycleManager.group().add(Utils.getObserverTag(nonResubscribableObserver),
"observableTag", PublishSubject.create(), nonResubscribableObserver);
TestObserver<String> nonResubscribableObserver = new TestObserver<>();
PublishSubject.<String>create()
.compose(lifecycleManager.group().transform(nonResubscribableObserver))
.subscribe(nonResubscribableObserver);

assertThat(lifecycleManager.group().hasObservables(nonResubscribableObserver)).isTrue();

Expand All @@ -148,31 +139,36 @@ public void testDestroyFinishingActivity() {
assertThat(lifecycleManager.group().hasObservables(nonResubscribableObserver)).isFalse();
}

@Test public void testResubscribableNotRemovedAfterNonFinishingDestroy() {
@Test public void testTaggedObserverNotRemovedAfterNonFinishingDestroy() {
when(observableManager.newGroup()).thenReturn(new ObservableGroup(1));

GroupLifecycleManager lifecycleManager = GroupLifecycleManager.onCreate
(observableManager, null, target);

Observer stableObserver = new TaggedObserver() {
TaggedObserver<String> stableObserver = new TaggedObserver<String>() {
@Override public String getTag() {
return "stableTag";
}

@Override public void onCompleted() {
@Override public void onComplete() {

}

@Override public void onError(Throwable e) {

}

@Override public void onNext(Object o) {
@Override public void onSubscribe(@NonNull Disposable d) {

}

@Override public void onNext(String s) {

}
};
lifecycleManager.group().add(Utils.getObserverTag(stableObserver),
"observableTag", PublishSubject.create(), stableObserver);
PublishSubject.<String>create()
.compose(lifecycleManager.group().transform(stableObserver))
.subscribe(stableObserver);

assertThat(lifecycleManager.group().hasObservables(stableObserver)).isTrue();

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.airbnb.rxgroups;

import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;

public class AutoTaggableObserverImpl<T> implements AutoTaggableObserver<T> {
@Override public void setTag(String tag) {

Expand All @@ -9,14 +12,18 @@ public class AutoTaggableObserverImpl<T> implements AutoTaggableObserver<T> {
return null;
}

@Override public void onCompleted() {
@Override public void onComplete() {

}

@Override public void onError(Throwable e) {

}

@Override public void onSubscribe(@NonNull Disposable d) {

}

@Override public void onNext(T t) {

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package test;

import com.airbnb.rxgroups.AutoResubscribe;
import rx.Observer;

import io.reactivex.Observer;

public class PlainObserver_Fail_AutoResubscribe {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package test;

import com.airbnb.rxgroups.AutoTag;
import rx.Observer;

import io.reactivex.Observer;

public class PlainObserver_Fail_AutoTag {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
import com.airbnb.rxgroups.AutoResubscribe;
import com.airbnb.rxgroups.TaggedObserver;

import io.reactivex.disposables.Disposable;

public class TaggedObserver_Pass_AutoResubscribe {
@AutoResubscribe
public TaggedObserver<Object> taggedObserver = new TaggedObserver<Object>() {
@Override public String getTag() {
return "stableTag";
}

@Override public void onCompleted() {
@Override public void onComplete() {

}

Expand All @@ -21,5 +23,9 @@ public class TaggedObserver_Pass_AutoResubscribe {
@Override public void onNext(Object o) {

}

@Override public void onSubscribe(Disposable d) {

}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import java.lang.annotation.Target;

/**
* Used on {@link rx.Observer} fields to indicate that they should be automatically subscribed to a
* certain Observable, or multiple Observables if they still haven't completed yet.
* Used on {@link io.reactivex.Observer} fields to indicate that they should be automatically
* subscribed to a certain Observable, or multiple Observables if they still haven't completed yet.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.airbnb.rxgroups;

import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;

/**
* A {@link rx.Observer} which has a stable tag. Must be used with {@link AutoResubscribe}
* A {@link io.reactivex.Observer} which has a stable tag. Must be used with {@link AutoResubscribe}
* annotation to set the tag before observer is used.
*/
public abstract class AutoResubscribingObserver<T> implements TaggedObserver<T> {
Expand All @@ -17,7 +20,7 @@ void setTag(String tag) {
}

@Override
public void onCompleted() {
public void onComplete() {

}

Expand All @@ -31,4 +34,7 @@ public void onNext(T t) {

}

@Override public void onSubscribe(@NonNull Disposable d) {

}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.airbnb.rxgroups;

import rx.Observer;

import io.reactivex.Observer;

/**
* {@link Observer} with a unique tag which can be automatically set during
Expand Down
Loading