Skip to content

Commit d1282ee

Browse files
committed
Add a shim to make it so the public api for repeatWhen and retryWhen don't expose Notification<?>
1 parent a9cd996 commit d1282ee

File tree

1 file changed

+52
-8
lines changed

1 file changed

+52
-8
lines changed

src/main/java/rx/Observable.java

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5801,8 +5801,19 @@ public final Observable<T> repeat(final long count, Scheduler scheduler) {
58015801
* @see <a href="https://github.com/ReactiveX/RxJava/wiki/Creating-Observables#repeatwhen">RxJava Wiki: repeatWhen()</a>
58025802
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229428.aspx">MSDN: Observable.Repeat</a>
58035803
*/
5804-
public final Observable<T> repeatWhen(Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> notificationHandler, Scheduler scheduler) {
5805-
return OnSubscribeRedo.repeat(this, notificationHandler, scheduler);
5804+
public final Observable<T> repeatWhen(final Func1<? super Observable<? extends Void>, ? extends Observable<?>> notificationHandler, Scheduler scheduler) {
5805+
Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> dematerializedNotificationHandler = new Func1<Observable<? extends Notification<?>>, Observable<?>>() {
5806+
@Override
5807+
public Observable<?> call(Observable<? extends Notification<?>> notifications) {
5808+
return notificationHandler.call(notifications.map(new Func1<Notification<?>, Void>() {
5809+
@Override
5810+
public Void call(Notification<?> notification) {
5811+
return null;
5812+
}
5813+
}));
5814+
}
5815+
};
5816+
return OnSubscribeRedo.repeat(this, dematerializedNotificationHandler, scheduler);
58065817
}
58075818

58085819
/**
@@ -5825,8 +5836,19 @@ public final Observable<T> repeatWhen(Func1<? super Observable<? extends Notific
58255836
* @see <a href="https://github.com/ReactiveX/RxJava/wiki/Creating-Observables#repeatwhen">RxJava Wiki: repeatWhen()</a>
58265837
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229428.aspx">MSDN: Observable.Repeat</a>
58275838
*/
5828-
public final Observable<T> repeatWhen(Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> notificationHandler) {
5829-
return OnSubscribeRedo.repeat(this, notificationHandler);
5839+
public final Observable<T> repeatWhen(final Func1<? super Observable<? extends Void>, ? extends Observable<?>> notificationHandler) {
5840+
Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> dematerializedNotificationHandler = new Func1<Observable<? extends Notification<?>>, Observable<?>>() {
5841+
@Override
5842+
public Observable<?> call(Observable<? extends Notification<?>> notifications) {
5843+
return notificationHandler.call(notifications.map(new Func1<Notification<?>, Void>() {
5844+
@Override
5845+
public Void call(Notification<?> notification) {
5846+
return null;
5847+
}
5848+
}));
5849+
}
5850+
};
5851+
return OnSubscribeRedo.repeat(this, dematerializedNotificationHandler);
58305852
}
58315853

58325854
/**
@@ -6541,8 +6563,19 @@ public final Observable<T> retry(Func2<Integer, Throwable, Boolean> predicate) {
65416563
* @return the source Observable modified with retry logic
65426564
* @see <a href="https://github.com/ReactiveX/RxJava/wiki/Error-Handling-Operators#retrywhen">RxJava Wiki: retryWhen()</a>
65436565
*/
6544-
public final Observable<T> retryWhen(Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> notificationHandler) {
6545-
return OnSubscribeRedo.<T> retry(this, notificationHandler);
6566+
public final Observable<T> retryWhen(final Func1<? super Observable<? extends Throwable>, ? extends Observable<?>> notificationHandler) {
6567+
Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> dematerializedNotificationHandler = new Func1<Observable<? extends Notification<?>>, Observable<?>>() {
6568+
@Override
6569+
public Observable<?> call(Observable<? extends Notification<?>> notifications) {
6570+
return notificationHandler.call(notifications.map(new Func1<Notification<?>, Throwable>() {
6571+
@Override
6572+
public Throwable call(Notification<?> notification) {
6573+
return notification.getThrowable();
6574+
}
6575+
}));
6576+
}
6577+
};
6578+
return OnSubscribeRedo.<T> retry(this, dematerializedNotificationHandler);
65466579
}
65476580

65486581
/**
@@ -6566,8 +6599,19 @@ public final Observable<T> retryWhen(Func1<? super Observable<? extends Notifica
65666599
* @return the source Observable modified with retry logic
65676600
* @see <a href="https://github.com/ReactiveX/RxJava/wiki/Error-Handling-Operators#retrywhen">RxJava Wiki: retryWhen()</a>
65686601
*/
6569-
public final Observable<T> retryWhen(Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> notificationHandler, Scheduler scheduler) {
6570-
return OnSubscribeRedo.<T> retry(this, notificationHandler, scheduler);
6602+
public final Observable<T> retryWhen(final Func1<? super Observable<? extends Throwable>, ? extends Observable<?>> notificationHandler, Scheduler scheduler) {
6603+
Func1<? super Observable<? extends Notification<?>>, ? extends Observable<?>> dematerializedNotificationHandler = new Func1<Observable<? extends Notification<?>>, Observable<?>>() {
6604+
@Override
6605+
public Observable<?> call(Observable<? extends Notification<?>> notifications) {
6606+
return notificationHandler.call(notifications.map(new Func1<Notification<?>, Throwable>() {
6607+
@Override
6608+
public Throwable call(Notification<?> notification) {
6609+
return notification.getThrowable();
6610+
}
6611+
}));
6612+
}
6613+
};
6614+
return OnSubscribeRedo.<T> retry(this, dematerializedNotificationHandler, scheduler);
65716615
}
65726616

65736617
/**

0 commit comments

Comments
 (0)