Skip to content

Commit 4c75853

Browse files
committed
Merge pull request #2630 from akarnokd/FixSubscriberLoss
Cast back Observer to Subscriber if passed to subscribe(Observer)
2 parents 4182f65 + 2f58536 commit 4c75853

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/main/java/rx/Observable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7289,6 +7289,9 @@ public final void onNext(T args) {
72897289
* @see <a href="http://reactivex.io/documentation/operators/subscribe.html">ReactiveX operators documentation: Subscribe</a>
72907290
*/
72917291
public final Subscription subscribe(final Observer<? super T> observer) {
7292+
if (observer instanceof Subscriber) {
7293+
return subscribe((Subscriber<? super T>)observer);
7294+
}
72927295
return subscribe(new Subscriber<T>() {
72937296

72947297
@Override

src/test/java/rx/ObservableTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,4 +1129,13 @@ public void testEmptyIsEmpty() {
11291129
verify(w, never()).onNext(any(Integer.class));
11301130
verify(w, never()).onError(any(Throwable.class));
11311131
}
1132+
1133+
@Test // cf. https://github.com/ReactiveX/RxJava/issues/2599
1134+
public void testSubscribingSubscriberAsObserverMaintainsSubscriptionChain() {
1135+
TestSubscriber<Object> subscriber = new TestSubscriber<Object>();
1136+
Subscription subscription = Observable.just("event").subscribe((Observer<Object>) subscriber);
1137+
subscription.unsubscribe();
1138+
1139+
subscriber.assertUnsubscribed();
1140+
}
11321141
}

0 commit comments

Comments
 (0)