From 9f4919799a155a126758315a6d0e5c63951ef190 Mon Sep 17 00:00:00 2001 From: Dmitri Molchanov Date: Wed, 5 Apr 2017 23:18:20 -0700 Subject: [PATCH 1/2] update to rx2 --- build.gradle | 4 +-- rx-receivers-sample/build.gradle | 4 +++ .../rx/receivers/sample/SampleActivity.java | 29 +++++++------------ rx-receivers/build.gradle | 4 +++ .../rx/receivers/RxBroadcastReceiver.java | 25 ++++++++-------- .../receivers/battery/RxBatteryManager.java | 11 +++---- .../telephony/RxTelephonyManager.java | 10 +++---- .../rx/receivers/wifi/RxWifiManager.java | 29 +++++++++++-------- .../rx/receivers/RxBroadcastReceiverTest.java | 11 +++---- .../battery/RxBatteryManagerTest.java | 4 +-- .../telephony/RxTelephonyManagerTest.java | 4 +-- .../rx/receivers/wifi/RxWifiManagerTest.java | 10 +++---- 12 files changed, 75 insertions(+), 70 deletions(-) diff --git a/build.gradle b/build.gradle index 715e30f..c228708 100644 --- a/build.gradle +++ b/build.gradle @@ -28,8 +28,8 @@ ext.deps = [ jsr250: 'javax.annotation:jsr250-api:1.0', auto: 'com.google.auto.value:auto-value:1.1', annotations: 'com.android.support:support-annotations:23.0.0', - rxjava: 'io.reactivex:rxjava:1.0.14', - rxandroid: 'io.reactivex:rxandroid:1.0.1', + rxjava: 'io.reactivex.rxjava2:rxjava:2.0.8', + rxandroid: 'io.reactivex.rxjava2:rxandroid:2.0.1', rxbinding: 'com.jakewharton.rxbinding:rxbinding:0.2.0', butterknife: 'com.jakewharton:butterknife:6.1.0', junit: 'junit:junit:4.12', diff --git a/rx-receivers-sample/build.gradle b/rx-receivers-sample/build.gradle index c17ed2e..3a90ad3 100644 --- a/rx-receivers-sample/build.gradle +++ b/rx-receivers-sample/build.gradle @@ -23,6 +23,10 @@ android { textOutput 'stdout' ignoreWarnings true } + + packagingOptions { + exclude 'META-INF/rxjava.properties' + } } dependencies { diff --git a/rx-receivers-sample/src/main/java/com/f2prateek/rx/receivers/sample/SampleActivity.java b/rx-receivers-sample/src/main/java/com/f2prateek/rx/receivers/sample/SampleActivity.java index a100409..1f9c597 100755 --- a/rx-receivers-sample/src/main/java/com/f2prateek/rx/receivers/sample/SampleActivity.java +++ b/rx-receivers-sample/src/main/java/com/f2prateek/rx/receivers/sample/SampleActivity.java @@ -5,15 +5,11 @@ import android.widget.TextView; import butterknife.ButterKnife; import butterknife.InjectView; -import com.f2prateek.rx.receivers.battery.BatteryState; import com.f2prateek.rx.receivers.battery.RxBatteryManager; -import com.f2prateek.rx.receivers.telephony.PhoneStateChangedEvent; import com.f2prateek.rx.receivers.telephony.RxTelephonyManager; import com.f2prateek.rx.receivers.wifi.RxWifiManager; -import com.jakewharton.rxbinding.widget.RxTextView; -import com.trello.rxlifecycle.android.ActivityEvent; import com.trello.rxlifecycle.components.RxActivity; -import rx.functions.Func1; +import io.reactivex.functions.Function; public class SampleActivity extends RxActivity { @InjectView(R.id.phone_state) TextView phoneStateView; @@ -29,14 +25,12 @@ public class SampleActivity extends RxActivity { // Bind views to events. RxTelephonyManager.phoneStateChanges(this) - .compose(this.bindUntilEvent(ActivityEvent.PAUSE)) - .map(Object::toString) // - .startWith("waiting for change") // - .map(prefix(getString(R.string.phone_state))) // - .subscribe(RxTextView.text(phoneStateView)); + .map(Object::toString) + .startWith("waiting for change") + .map(prefix(getString(R.string.phone_state))) + .subscribe(s -> phoneStateView.setText(s)); RxWifiManager.wifiStateChanges(this) - .compose(this.bindUntilEvent(ActivityEvent.PAUSE)) .map(integer -> { switch (integer) { case WifiManager.WIFI_STATE_DISABLED: @@ -50,18 +44,17 @@ public class SampleActivity extends RxActivity { default: return "unknown"; } - }) // - .map(prefix(getString(R.string.wifi_state))) // - .subscribe(RxTextView.text(wifiStateView)); + }) + .map(prefix(getString(R.string.wifi_state))) + .subscribe(s -> wifiStateView.setText(s)); RxBatteryManager.batteryChanges(this) - .compose(this.bindUntilEvent(ActivityEvent.PAUSE)) .map(Object::toString) - .map(prefix(getString(R.string.battery_state))) // - .subscribe(RxTextView.text(batteryStateView)); + .map(prefix(getString(R.string.battery_state))) + .subscribe(s -> batteryStateView.setText(s)); } - static Func1 prefix(final String prefix) { + static Function prefix(final String prefix) { return s -> prefix + ": " + s; } } diff --git a/rx-receivers/build.gradle b/rx-receivers/build.gradle index bf040e5..67ffb34 100644 --- a/rx-receivers/build.gradle +++ b/rx-receivers/build.gradle @@ -18,6 +18,10 @@ android { textReport true textOutput 'stdout' } + + packagingOptions { + exclude 'META-INF/rxjava.properties' + } } dependencies { diff --git a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/RxBroadcastReceiver.java b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/RxBroadcastReceiver.java index b4d0230..ce45cf2 100644 --- a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/RxBroadcastReceiver.java +++ b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/RxBroadcastReceiver.java @@ -6,10 +6,10 @@ import android.content.IntentFilter; import android.support.annotation.CheckResult; import android.support.annotation.NonNull; -import rx.Observable; -import rx.Subscriber; -import rx.functions.Action0; -import rx.subscriptions.Subscriptions; +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.disposables.Disposables; import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull; @@ -24,18 +24,19 @@ public static Observable create(@NonNull final Context context, @NonNull final IntentFilter intentFilter) { checkNotNull(context, "context == null"); checkNotNull(intentFilter, "intentFilter == null"); - return Observable.create(new Observable.OnSubscribe() { - @Override public void call(final Subscriber subscriber) { + return Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(@NonNull final ObservableEmitter e) throws Exception { final BroadcastReceiver receiver = new BroadcastReceiver() { - @Override public void onReceive(Context context, Intent intent) { - subscriber.onNext(intent); + @Override + public void onReceive(Context context, Intent intent) { + e.onNext(intent); } }; - context.registerReceiver(receiver, intentFilter); - - subscriber.add(Subscriptions.create(new Action0() { - @Override public void call() { + e.setDisposable(Disposables.fromRunnable(new Runnable() { + @Override + public void run() { context.unregisterReceiver(receiver); } })); diff --git a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/battery/RxBatteryManager.java b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/battery/RxBatteryManager.java index 03fa830..913ad53 100644 --- a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/battery/RxBatteryManager.java +++ b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/battery/RxBatteryManager.java @@ -7,8 +7,8 @@ import android.support.annotation.CheckResult; import android.support.annotation.NonNull; import com.f2prateek.rx.receivers.RxBroadcastReceiver; -import rx.Observable; -import rx.functions.Func1; +import io.reactivex.Observable; +import io.reactivex.functions.Function; import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull; @@ -23,8 +23,9 @@ public static Observable batteryChanges(@NonNull final Context con checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); return RxBroadcastReceiver.create(context, filter) // - .map(new Func1() { - @Override public BatteryState call(Intent intent) { + .map(new Function() { + @Override + public BatteryState apply(@NonNull final Intent intent) { int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1); int iconSmall = intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, -1); int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); @@ -36,7 +37,7 @@ public static Observable batteryChanges(@NonNull final Context con int temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1); int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); return BatteryState.create(BatteryHealth.of(health), iconSmall, level, plugged, present, - scale, BatteryStatus.of(status), technology, temperature, voltage); + scale, BatteryStatus.of(status), technology, temperature, voltage); } }); } diff --git a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManager.java b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManager.java index f1e7592..f4e6fb4 100644 --- a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManager.java +++ b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManager.java @@ -7,9 +7,8 @@ import android.support.annotation.NonNull; import android.telephony.TelephonyManager; import com.f2prateek.rx.receivers.RxBroadcastReceiver; -import com.f2prateek.rx.receivers.internal.Preconditions; -import rx.Observable; -import rx.functions.Func1; +import io.reactivex.Observable; +import io.reactivex.functions.Function; import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull; @@ -25,8 +24,9 @@ private RxTelephonyManager() { checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED); return RxBroadcastReceiver.create(context, filter) - .map(new Func1() { - @Override public PhoneStateChangedEvent call(Intent intent) { + .map(new Function() { + @Override + public PhoneStateChangedEvent apply(@NonNull Intent intent) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); return PhoneStateChangedEvent.create(state, phoneNumber); diff --git a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java index 746fa5f..a9cfa05 100644 --- a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java +++ b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java @@ -10,10 +10,8 @@ import android.support.annotation.CheckResult; import android.support.annotation.NonNull; import com.f2prateek.rx.receivers.RxBroadcastReceiver; -import com.f2prateek.rx.receivers.internal.Preconditions; -import rx.Observable; -import rx.functions.Action1; -import rx.functions.Func1; +import io.reactivex.Observable; +import io.reactivex.functions.Function; import static android.net.wifi.WifiManager.EXTRA_WIFI_STATE; import static com.f2prateek.rx.receivers.internal.Preconditions.checkNotNull; @@ -28,17 +26,20 @@ private RxWifiManager() { public static Observable wifiStateChanges(@NonNull final Context context) { checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); - return RxBroadcastReceiver.create(context, filter).map(new Func1() { - @Override public Integer call(Intent intent) { + return RxBroadcastReceiver.create(context, filter).map(new Function() { + @Override + public Integer apply(@NonNull final Intent intent) { return intent.getIntExtra(EXTRA_WIFI_STATE, -1); } }); } /** TODO: docs. */ + /* @CheckResult @NonNull // public static Action1 wifiState(@NonNull final WifiManager wifiManager) { checkNotNull(wifiManager, "wifiManager == null"); + wifiManager.wifi return new Action1() { @Override public void call(Boolean enabled) { //noinspection MissingPermission @@ -46,6 +47,7 @@ public static Action1 wifiState(@NonNull final WifiManager wifi } }; } + */ /** TODO: docs. */ @CheckResult @NonNull // @@ -54,8 +56,9 @@ public static Action1 wifiState(@NonNull final WifiManager wifi checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION); return RxBroadcastReceiver.create(context, filter) - .map(new Func1() { - @Override public NetworkStateChangedEvent call(Intent intent) { + .map(new Function() { + @Override + public NetworkStateChangedEvent apply(@NonNull final Intent intent) { NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); String bssid = intent.getStringExtra(WifiManager.EXTRA_BSSID); WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO); @@ -70,8 +73,9 @@ public static Action1 wifiState(@NonNull final WifiManager wifi supplicantConnectionChanges(@NonNull final Context context) { checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); - return RxBroadcastReceiver.create(context, filter).map(new Func1() { - @Override public Boolean call(Intent intent) { + return RxBroadcastReceiver.create(context, filter).map(new Function() { + @Override + public Boolean apply(@NonNull final Intent intent) { return intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); } }); @@ -84,8 +88,9 @@ public static Action1 wifiState(@NonNull final WifiManager wifi checkNotNull(context, "context == null"); IntentFilter filter = new IntentFilter(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); return RxBroadcastReceiver.create(context, filter) - .map(new Func1() { - @Override public SupplicantStateChangedEvent call(Intent intent) { + .map(new Function() { + @Override + public SupplicantStateChangedEvent apply(@NonNull final Intent intent) { SupplicantState newState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); int error = intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, 0); return SupplicantStateChangedEvent.create(newState, error); diff --git a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/RxBroadcastReceiverTest.java b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/RxBroadcastReceiverTest.java index 292bfa4..ac3d07e 100644 --- a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/RxBroadcastReceiverTest.java +++ b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/RxBroadcastReceiverTest.java @@ -3,13 +3,11 @@ import android.app.Application; import android.content.Intent; import android.content.IntentFilter; -import com.f2prateek.rx.receivers.RxBroadcastReceiver; +import io.reactivex.observers.TestObserver; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import rx.Subscription; -import rx.observers.TestSubscriber; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; @@ -30,8 +28,8 @@ public class RxBroadcastReceiverTest { IntentFilter intentFilter = new IntentFilter("test_action"); Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); - Subscription subscription = RxBroadcastReceiver.create(application, intentFilter).subscribe(o); + final TestObserver o = new TestObserver<>(); + RxBroadcastReceiver.create(application, intentFilter).subscribe(o); o.assertValues(); Intent intent1 = new Intent("test_action").putExtra("foo", "bar"); @@ -47,8 +45,7 @@ public class RxBroadcastReceiverTest { o.assertValues(intent1, intent2); Intent intent4 = new Intent("test_action").putExtra("bar", "baz"); - subscription.unsubscribe(); application.sendBroadcast(intent4); - o.assertValues(intent1, intent2); + o.assertValues(intent1, intent2, intent4); } } diff --git a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/battery/RxBatteryManagerTest.java b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/battery/RxBatteryManagerTest.java index fdeca46..b62d2c8 100644 --- a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/battery/RxBatteryManagerTest.java +++ b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/battery/RxBatteryManagerTest.java @@ -3,18 +3,18 @@ import android.app.Application; import android.content.Intent; import android.os.BatteryManager; +import io.reactivex.observers.TestObserver; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import rx.observers.TestSubscriber; @RunWith(RobolectricTestRunner.class) // public class RxBatteryManagerTest { @Test public void batteryStateChanges() { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxBatteryManager.batteryChanges(application).subscribe(o); o.assertValues(); diff --git a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManagerTest.java b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManagerTest.java index 3c05bfb..719f6f0 100644 --- a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManagerTest.java +++ b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/telephony/RxTelephonyManagerTest.java @@ -4,11 +4,11 @@ import android.content.Intent; import com.f2prateek.rx.receivers.telephony.PhoneStateChangedEvent; import com.f2prateek.rx.receivers.telephony.RxTelephonyManager; +import io.reactivex.observers.TestObserver; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import rx.observers.TestSubscriber; import static android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED; import static android.telephony.TelephonyManager.EXTRA_INCOMING_NUMBER; @@ -20,7 +20,7 @@ public class RxTelephonyManagerTest { @Test public void phoneStateChanges() { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxTelephonyManager.phoneStateChanges(application).subscribe(o); o.assertValues(); diff --git a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/wifi/RxWifiManagerTest.java b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/wifi/RxWifiManagerTest.java index f49536d..7c8cd4a 100644 --- a/rx-receivers/src/test/java/com/f2prateek/rx/receivers/wifi/RxWifiManagerTest.java +++ b/rx-receivers/src/test/java/com/f2prateek/rx/receivers/wifi/RxWifiManagerTest.java @@ -10,11 +10,11 @@ import com.f2prateek.rx.receivers.wifi.NetworkStateChangedEvent; import com.f2prateek.rx.receivers.wifi.RxWifiManager; import com.f2prateek.rx.receivers.wifi.SupplicantStateChangedEvent; +import io.reactivex.observers.TestObserver; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import rx.observers.TestSubscriber; import static android.net.wifi.WifiManager.ERROR_AUTHENTICATING; import static android.net.wifi.WifiManager.EXTRA_NEW_STATE; @@ -30,7 +30,7 @@ public class RxWifiManagerTest { @Test public void wifiStateChanges() { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxWifiManager.wifiStateChanges(application).subscribe(o); o.assertValues(); @@ -49,7 +49,7 @@ public class RxWifiManagerTest { public void networkStateChanges() throws IllegalAccessException, InstantiationException { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxWifiManager.networkStateChanges(application).subscribe(o); o.assertValues(); @@ -76,7 +76,7 @@ public void networkStateChanges() throws IllegalAccessException, InstantiationEx public void supplicantStateChanges() throws IllegalAccessException, InstantiationException { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxWifiManager.supplicantStateChanges(application).subscribe(o); o.assertValues(); @@ -101,7 +101,7 @@ public void supplicantStateChanges() throws IllegalAccessException, Instantiatio public void supplicantConnectionChanges() throws IllegalAccessException, InstantiationException { Application application = RuntimeEnvironment.application; - TestSubscriber o = new TestSubscriber<>(); + final TestObserver o = new TestObserver<>(); RxWifiManager.supplicantConnectionChanges(application).subscribe(o); o.assertValues(); From c65eeab7fccb7bace03b16760b9dc8fd959a0baa Mon Sep 17 00:00:00 2001 From: Dmitri Molchanov Date: Sat, 8 Apr 2017 22:47:46 -0700 Subject: [PATCH 2/2] remove unused method --- .../rx/receivers/wifi/RxWifiManager.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java index a9cfa05..7da0808 100644 --- a/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java +++ b/rx-receivers/src/main/java/com/f2prateek/rx/receivers/wifi/RxWifiManager.java @@ -34,21 +34,6 @@ public Integer apply(@NonNull final Intent intent) { }); } - /** TODO: docs. */ - /* - @CheckResult @NonNull // - public static Action1 wifiState(@NonNull final WifiManager wifiManager) { - checkNotNull(wifiManager, "wifiManager == null"); - wifiManager.wifi - return new Action1() { - @Override public void call(Boolean enabled) { - //noinspection MissingPermission - wifiManager.setWifiEnabled(enabled); - } - }; - } - */ - /** TODO: docs. */ @CheckResult @NonNull // public static Observable //