File tree Expand file tree Collapse file tree 2 files changed +24
-0
lines changed
language-adaptors/rxjava-scala/src Expand file tree Collapse file tree 2 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,15 @@ trait Subscriber[-T] extends Observer[T] with Subscription {
20
20
asJavaSubscriber.add(s.asJavaSubscription)
21
21
}
22
22
23
+ /**
24
+ * Register a callback to be run when Subscriber is unsubscribed
25
+ *
26
+ * @param u callback to run when unsubscribed
27
+ */
28
+ final def add (u : => Unit ): Unit = {
29
+ asJavaSubscriber.add(Subscription (u).asJavaSubscription)
30
+ }
31
+
23
32
override final def unsubscribe (): Unit = {
24
33
asJavaSubscriber.unsubscribe()
25
34
}
Original file line number Diff line number Diff line change @@ -42,4 +42,19 @@ class SubscriberTests extends JUnitSuite {
42
42
assertTrue(innerSubscriber.isUnsubscribed)
43
43
}
44
44
45
+ @ Test def testBlockCallbackOnlyOnce () {
46
+ var called = false
47
+ val o = Observable [Int ](subscriber => {
48
+ subscriber.add({ called = ! called })
49
+ })
50
+
51
+ val subscription = o.subscribe()
52
+ subscription.unsubscribe()
53
+ subscription.unsubscribe()
54
+
55
+ // Even if called multiple times, callback is only called once
56
+ assertTrue(called)
57
+ assertTrue(subscription.isUnsubscribed)
58
+ }
59
+
45
60
}
You can’t perform that action at this time.
0 commit comments