Skip to content

Commit 632290d

Browse files
committed
RxScala: Fix recursive onStart call in Subscriber
1 parent 362aee9 commit 632290d

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Subscriber.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ trait Subscriber[-T] extends Observer[T] with Subscription {
55
self =>
66

77
private [scala] val asJavaSubscriber: rx.Subscriber[_ >: T] = new rx.Subscriber[T] with SubscriberAdapter[T] {
8-
override def onStart(): Unit = self.onStart()
98
override def onNext(value: T): Unit = self.onNext(value)
109
override def onError(error: Throwable): Unit = self.onError(error)
1110
override def onCompleted(): Unit = self.onCompleted()
@@ -36,7 +35,7 @@ trait Subscriber[-T] extends Observer[T] with Subscription {
3635
}
3736

3837
override final def isUnsubscribed: Boolean = {
39-
asJavaSubscriber.isUnsubscribed()
38+
asJavaSubscriber.isUnsubscribed
4039
}
4140

4241
def onStart(): Unit = {

language-adaptors/rxjava-scala/src/test/scala/rx/lang/scala/SubscriberTests.scala

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ package rx.lang.scala
1818
import org.junit.Test
1919
import org.junit.Assert.assertNotNull
2020
import org.junit.Assert.assertTrue
21+
import org.junit.Assert.assertFalse
22+
import org.junit.Assert.assertEquals
2123
import org.scalatest.junit.JUnitSuite
2224

2325
class SubscriberTests extends JUnitSuite {
@@ -57,4 +59,27 @@ class SubscriberTests extends JUnitSuite {
5759
assertTrue(subscription.isUnsubscribed)
5860
}
5961

62+
@Test def testNewSubscriber(): Unit = {
63+
var didComplete = false
64+
var didError = false
65+
var onNextValue = 0
66+
67+
Observable.just(1).subscribe(new Subscriber[Int] {
68+
override def onCompleted(): Unit = {
69+
didComplete = true
70+
}
71+
72+
override def onError(e: Throwable): Unit = {
73+
didError = true
74+
}
75+
76+
override def onNext(v: Int): Unit = {
77+
onNextValue = v
78+
}
79+
})
80+
81+
assertTrue("Subscriber called onCompleted", didComplete)
82+
assertFalse("Subscriber did not call onError", didError)
83+
assertEquals(1, onNextValue)
84+
}
6085
}

0 commit comments

Comments
 (0)