Skip to content

Commit 646be2d

Browse files
davidmotenakarnokd
authored andcommitted
enhance generics doOnError doOnRequest (#4555)
1 parent 01e68d3 commit 646be2d

File tree

5 files changed

+38
-6
lines changed

5 files changed

+38
-6
lines changed

src/main/java/rx/Observable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5879,7 +5879,7 @@ public final Observable<T> doOnEach(Observer<? super T> observer) {
58795879
* @return the source Observable with the side-effecting behavior applied
58805880
* @see <a href="http://reactivex.io/documentation/operators/do.html">ReactiveX operators documentation: Do</a>
58815881
*/
5882-
public final Observable<T> doOnError(final Action1<Throwable> onError) {
5882+
public final Observable<T> doOnError(final Action1<? super Throwable> onError) {
58835883
Action1<T> onNext = Actions.empty();
58845884
Action0 onCompleted = Actions.empty();
58855885
Observer<T> observer = new ActionObserver<T>(onNext, onError, onCompleted);
@@ -5934,7 +5934,7 @@ public final Observable<T> doOnNext(final Action1<? super T> onNext) {
59345934
* documentation: Do</a>
59355935
* @since 1.2
59365936
*/
5937-
public final Observable<T> doOnRequest(final Action1<Long> onRequest) {
5937+
public final Observable<T> doOnRequest(final Action1<? super Long> onRequest) {
59385938
return lift(new OperatorDoOnRequest<T>(onRequest));
59395939
}
59405940

src/main/java/rx/internal/operators/OperatorDoOnRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
*/
2929
public class OperatorDoOnRequest<T> implements Operator<T, T> {
3030

31-
final Action1<Long> request;
31+
final Action1<? super Long> request;
3232

33-
public OperatorDoOnRequest(Action1<Long> request) {
33+
public OperatorDoOnRequest(Action1<? super Long> request) {
3434
this.request = request;
3535
}
3636

src/main/java/rx/internal/util/ActionObserver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
public final class ActionObserver<T> implements Observer<T> {
2626

2727
final Action1<? super T> onNext;
28-
final Action1<Throwable> onError;
28+
final Action1<? super Throwable> onError;
2929
final Action0 onCompleted;
3030

31-
public ActionObserver(Action1<? super T> onNext, Action1<Throwable> onError, Action0 onCompleted) {
31+
public ActionObserver(Action1<? super T> onNext, Action1<? super Throwable> onError, Action0 onCompleted) {
3232
this.onNext = onNext;
3333
this.onError = onError;
3434
this.onCompleted = onCompleted;

src/test/java/rx/ObservableDoOnTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import rx.functions.Action0;
2929
import rx.functions.Action1;
30+
import rx.observers.TestSubscriber;
3031

3132
public class ObservableDoOnTest {
3233

@@ -65,6 +66,21 @@ public void call(Throwable v) {
6566
assertNotNull(t);
6667
assertEquals(t, r.get());
6768
}
69+
70+
@Test
71+
public void testDoOnErrorWithActionOfTypeObject() {
72+
final AtomicReference<Boolean> r = new AtomicReference<Boolean>();
73+
TestSubscriber<String> ts = TestSubscriber.create();
74+
Observable.<String> error(new RuntimeException("an error"))
75+
.doOnError(new Action1<Object>() {
76+
77+
@Override
78+
public void call(Object v) {
79+
r.set(true);
80+
}
81+
}).subscribe(ts);
82+
assertTrue(r.get());
83+
}
6884

6985
@Test
7086
public void testDoOnCompleted() {

src/test/java/rx/internal/operators/OperatorDoOnRequestTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import rx.Observable;
2828
import rx.Observable.OnSubscribe;
2929
import rx.functions.*;
30+
import rx.observers.TestSubscriber;
3031

3132
public class OperatorDoOnRequestTest {
3233

@@ -140,4 +141,19 @@ public void setProducer(Producer p) {
140141
Assert.assertEquals(Arrays.asList(0L, 1L), requested);
141142
}
142143
}
144+
145+
@Test
146+
public void canCallDoOnRequestWithActionOfTypeObject() {
147+
final AtomicReference<Boolean> r = new AtomicReference<Boolean>();
148+
TestSubscriber<String> ts = TestSubscriber.create();
149+
Observable.just("a").doOnRequest(
150+
new Action1<Object>() {
151+
152+
@Override
153+
public void call(Object v) {
154+
r.set(true);
155+
}
156+
}).subscribe(ts);
157+
assertTrue(r.get());
158+
}
143159
}

0 commit comments

Comments
 (0)