Skip to content

Commit fb37226

Browse files
authored
3.x: remove no-arg, dematerialize(); remove replay(Scheduler) variants (#6539)
1 parent 9e9d31c commit fb37226

14 files changed

+43
-697
lines changed

src/main/java/io/reactivex/Flowable.java

-199
Original file line numberDiff line numberDiff line change
@@ -8843,57 +8843,6 @@ public final Flowable<T> delaySubscription(long delay, TimeUnit unit, Scheduler
88438843
return delaySubscription(timer(delay, unit, scheduler));
88448844
}
88458845

8846-
/**
8847-
* Returns a Flowable that reverses the effect of {@link #materialize materialize} by transforming the
8848-
* {@link Notification} objects emitted by the source Publisher into the items or notifications they
8849-
* represent.
8850-
* <p>
8851-
* <img width="640" height="335" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/dematerialize.png" alt="">
8852-
* <p>
8853-
* When the upstream signals an {@link Notification#createOnError(Throwable) onError} or
8854-
* {@link Notification#createOnComplete() onComplete} item, the
8855-
* returned Flowable cancels the flow and terminates with that type of terminal event:
8856-
* <pre><code>
8857-
* Flowable.just(createOnNext(1), createOnComplete(), createOnNext(2))
8858-
* .doOnCancel(() -&gt; System.out.println("Cancelled!"));
8859-
* .dematerialize()
8860-
* .test()
8861-
* .assertResult(1);
8862-
* </code></pre>
8863-
* If the upstream signals {@code onError} or {@code onComplete} directly, the flow is terminated
8864-
* with the same event.
8865-
* <pre><code>
8866-
* Flowable.just(createOnNext(1), createOnNext(2))
8867-
* .dematerialize()
8868-
* .test()
8869-
* .assertResult(1, 2);
8870-
* </code></pre>
8871-
* If this behavior is not desired, the completion can be suppressed by applying {@link #concatWith(Publisher)}
8872-
* with a {@link #never()} source.
8873-
* <dl>
8874-
* <dt><b>Backpressure:</b></dt>
8875-
* <dd>The operator doesn't interfere with backpressure which is determined by the source {@code Publisher}'s
8876-
* backpressure behavior.</dd>
8877-
* <dt><b>Scheduler:</b></dt>
8878-
* <dd>{@code dematerialize} does not operate by default on a particular {@link Scheduler}.</dd>
8879-
* </dl>
8880-
*
8881-
* @param <T2> the output value type
8882-
* @return a Flowable that emits the items and notifications embedded in the {@link Notification} objects
8883-
* emitted by the source Publisher
8884-
* @see <a href="http://reactivex.io/documentation/operators/materialize-dematerialize.html">ReactiveX operators documentation: Dematerialize</a>
8885-
* @see #dematerialize(Function)
8886-
* @deprecated in 2.2.4; inherently type-unsafe as it overrides the output generic type. Use {@link #dematerialize(Function)} instead.
8887-
*/
8888-
@CheckReturnValue
8889-
@SchedulerSupport(SchedulerSupport.NONE)
8890-
@BackpressureSupport(BackpressureKind.PASS_THROUGH)
8891-
@Deprecated
8892-
@SuppressWarnings({ "unchecked", "rawtypes" })
8893-
public final <T2> Flowable<T2> dematerialize() {
8894-
return RxJavaPlugins.onAssembly(new FlowableDematerialize(this, Functions.identity()));
8895-
}
8896-
88978846
/**
88988847
* Returns a Flowable that reverses the effect of {@link #materialize materialize} by transforming the
88998848
* {@link Notification} objects extracted from the source items via a selector function
@@ -13234,51 +13183,6 @@ public final <R> Flowable<R> replay(Function<? super Flowable<T>, ? extends Publ
1323413183
FlowableInternalHelper.replaySupplier(this, bufferSize, time, unit, scheduler, eagerTruncate), selector);
1323513184
}
1323613185

13237-
/**
13238-
* Returns a Flowable that emits items that are the results of invoking a specified selector on items
13239-
* emitted by a {@link ConnectableFlowable} that shares a single subscription to the source Publisher,
13240-
* replaying a maximum of {@code bufferSize} items.
13241-
* <p>
13242-
* Note that due to concurrency requirements, {@code replay(bufferSize)} may hold strong references to more than
13243-
* {@code bufferSize} source emissions.
13244-
* <p>
13245-
* <img width="640" height="440" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/replay.fns.png" alt="">
13246-
* <dl>
13247-
* <dt><b>Backpressure:</b></dt>
13248-
* <dd>This operator supports backpressure. Note that the upstream requests are determined by the child
13249-
* Subscriber which requests the largest amount: i.e., two child Subscribers with requests of 10 and 100 will
13250-
* request 100 elements from the underlying Publisher sequence.</dd>
13251-
* <dt><b>Scheduler:</b></dt>
13252-
* <dd>You specify which {@link Scheduler} this operator will use.</dd>
13253-
* </dl>
13254-
*
13255-
* @param <R>
13256-
* the type of items emitted by the resulting Publisher
13257-
* @param selector
13258-
* a selector function, which can use the multicasted sequence as many times as needed, without
13259-
* causing multiple subscriptions to the Publisher
13260-
* @param bufferSize
13261-
* the buffer size that limits the number of items the connectable Publisher can replay
13262-
* @param scheduler
13263-
* the Scheduler on which the replay is observed
13264-
* @return a Flowable that emits items that are the results of invoking the selector on items emitted by
13265-
* a {@link ConnectableFlowable} that shares a single subscription to the source Publisher,
13266-
* replaying no more than {@code bufferSize} notifications
13267-
* @see <a href="http://reactivex.io/documentation/operators/replay.html">ReactiveX operators documentation: Replay</a>
13268-
*/
13269-
@CheckReturnValue
13270-
@NonNull
13271-
@BackpressureSupport(BackpressureKind.FULL)
13272-
@SchedulerSupport(SchedulerSupport.CUSTOM)
13273-
public final <R> Flowable<R> replay(final Function<? super Flowable<T>, ? extends Publisher<R>> selector, final int bufferSize, final Scheduler scheduler) {
13274-
ObjectHelper.requireNonNull(selector, "selector is null");
13275-
ObjectHelper.requireNonNull(scheduler, "scheduler is null");
13276-
ObjectHelper.verifyPositive(bufferSize, "bufferSize");
13277-
return FlowableReplay.multicastSelector(FlowableInternalHelper.replaySupplier(this, bufferSize, false),
13278-
FlowableInternalHelper.replayFunction(selector, scheduler)
13279-
);
13280-
}
13281-
1328213186
/**
1328313187
* Returns a Flowable that emits items that are the results of invoking a specified selector on items
1328413188
* emitted by a {@link ConnectableFlowable} that shares a single subscription to the source Publisher,
@@ -13403,43 +13307,6 @@ public final <R> Flowable<R> replay(Function<? super Flowable<T>, ? extends Publ
1340313307
return FlowableReplay.multicastSelector(FlowableInternalHelper.replaySupplier(this, time, unit, scheduler, eagerTruncate), selector);
1340413308
}
1340513309

13406-
/**
13407-
* Returns a Flowable that emits items that are the results of invoking a specified selector on items
13408-
* emitted by a {@link ConnectableFlowable} that shares a single subscription to the source Publisher.
13409-
* <p>
13410-
* <img width="640" height="445" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/replay.fs.png" alt="">
13411-
* <dl>
13412-
* <dt><b>Backpressure:</b></dt>
13413-
* <dd>This operator supports backpressure. Note that the upstream requests are determined by the child
13414-
* Subscriber which requests the largest amount: i.e., two child Subscribers with requests of 10 and 100 will
13415-
* request 100 elements from the underlying Publisher sequence.</dd>
13416-
* <dt><b>Scheduler:</b></dt>
13417-
* <dd>You specify which {@link Scheduler} this operator will use.</dd>
13418-
* </dl>
13419-
*
13420-
* @param <R>
13421-
* the type of items emitted by the resulting Publisher
13422-
* @param selector
13423-
* a selector function, which can use the multicasted sequence as many times as needed, without
13424-
* causing multiple subscriptions to the Publisher
13425-
* @param scheduler
13426-
* the Scheduler where the replay is observed
13427-
* @return a Flowable that emits items that are the results of invoking the selector on items emitted by
13428-
* a {@link ConnectableFlowable} that shares a single subscription to the source Publisher,
13429-
* replaying all items
13430-
* @see <a href="http://reactivex.io/documentation/operators/replay.html">ReactiveX operators documentation: Replay</a>
13431-
*/
13432-
@CheckReturnValue
13433-
@NonNull
13434-
@BackpressureSupport(BackpressureKind.FULL)
13435-
@SchedulerSupport(SchedulerSupport.CUSTOM)
13436-
public final <R> Flowable<R> replay(final Function<? super Flowable<T>, ? extends Publisher<R>> selector, final Scheduler scheduler) {
13437-
ObjectHelper.requireNonNull(selector, "selector is null");
13438-
ObjectHelper.requireNonNull(scheduler, "scheduler is null");
13439-
return FlowableReplay.multicastSelector(FlowableInternalHelper.replaySupplier(this),
13440-
FlowableInternalHelper.replayFunction(selector, scheduler));
13441-
}
13442-
1344313310
/**
1344413311
* Returns a {@link ConnectableFlowable} that shares a single subscription to the source Publisher that
1344513312
* replays at most {@code bufferSize} items emitted by that Publisher. A Connectable Publisher resembles
@@ -13651,41 +13518,6 @@ public final ConnectableFlowable<T> replay(final int bufferSize, final long time
1365113518
return FlowableReplay.create(this, time, unit, scheduler, bufferSize, eagerTruncate);
1365213519
}
1365313520

13654-
/**
13655-
* Returns a {@link ConnectableFlowable} that shares a single subscription to the source Publisher and
13656-
* replays at most {@code bufferSize} items emitted by that Publisher. A Connectable Publisher resembles
13657-
* an ordinary Publisher, except that it does not begin emitting items when it is subscribed to, but only
13658-
* when its {@code connect} method is called.
13659-
* <p>
13660-
* Note that due to concurrency requirements, {@code replay(bufferSize)} may hold strong references to more than
13661-
* {@code bufferSize} source emissions.
13662-
* <p>
13663-
* <img width="640" height="515" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/replay.ns.png" alt="">
13664-
* <dl>
13665-
* <dt><b>Backpressure:</b></dt>
13666-
* <dd>This operator supports backpressure. Note that the upstream requests are determined by the child
13667-
* Subscriber which requests the largest amount: i.e., two child Subscribers with requests of 10 and 100 will
13668-
* request 100 elements from the underlying Publisher sequence.</dd>
13669-
* <dt><b>Scheduler:</b></dt>
13670-
* <dd>You specify which {@link Scheduler} this operator will use.</dd>
13671-
* </dl>
13672-
*
13673-
* @param bufferSize
13674-
* the buffer size that limits the number of items that can be replayed
13675-
* @param scheduler
13676-
* the scheduler on which the Subscribers will observe the emitted items
13677-
* @return a {@link ConnectableFlowable} that shares a single subscription to the source Publisher and
13678-
* replays at most {@code bufferSize} items that were emitted by the Publisher
13679-
* @see <a href="http://reactivex.io/documentation/operators/replay.html">ReactiveX operators documentation: Replay</a>
13680-
*/
13681-
@CheckReturnValue
13682-
@BackpressureSupport(BackpressureKind.FULL)
13683-
@SchedulerSupport(SchedulerSupport.CUSTOM)
13684-
public final ConnectableFlowable<T> replay(final int bufferSize, final Scheduler scheduler) {
13685-
ObjectHelper.requireNonNull(scheduler, "scheduler is null");
13686-
return FlowableReplay.observeOn(replay(bufferSize), scheduler);
13687-
}
13688-
1368913521
/**
1369013522
* Returns a {@link ConnectableFlowable} that shares a single subscription to the source Publisher and
1369113523
* replays all items emitted by that Publisher within a specified time window. A Connectable Publisher
@@ -13800,37 +13632,6 @@ public final ConnectableFlowable<T> replay(final long time, final TimeUnit unit,
1380013632
return FlowableReplay.create(this, time, unit, scheduler, eagerTruncate);
1380113633
}
1380213634

13803-
/**
13804-
* Returns a {@link ConnectableFlowable} that shares a single subscription to the source Publisher that
13805-
* will replay all of its items and notifications to any future {@link Subscriber} on the given
13806-
* {@link Scheduler}. A Connectable Publisher resembles an ordinary Publisher, except that it does not
13807-
* begin emitting items when it is subscribed to, but only when its {@code connect} method is called.
13808-
* <p>
13809-
* <img width="640" height="515" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/replay.s.png" alt="">
13810-
* <dl>
13811-
* <dt><b>Backpressure:</b></dt>
13812-
* <dd>This operator supports backpressure. Note that the upstream requests are determined by the child
13813-
* Subscriber which requests the largest amount: i.e., two child Subscribers with requests of 10 and 100 will
13814-
* request 100 elements from the underlying Publisher sequence.</dd>
13815-
* <dt><b>Scheduler:</b></dt>
13816-
* <dd>You specify which {@link Scheduler} this operator will use.</dd>
13817-
* </dl>
13818-
*
13819-
* @param scheduler
13820-
* the Scheduler on which the Subscribers will observe the emitted items
13821-
* @return a {@link ConnectableFlowable} that shares a single subscription to the source Publisher that
13822-
* will replay all of its items and notifications to any future {@link Subscriber} on the given
13823-
* {@link Scheduler}
13824-
* @see <a href="http://reactivex.io/documentation/operators/replay.html">ReactiveX operators documentation: Replay</a>
13825-
*/
13826-
@CheckReturnValue
13827-
@BackpressureSupport(BackpressureKind.FULL)
13828-
@SchedulerSupport(SchedulerSupport.CUSTOM)
13829-
public final ConnectableFlowable<T> replay(final Scheduler scheduler) {
13830-
ObjectHelper.requireNonNull(scheduler, "scheduler is null");
13831-
return FlowableReplay.observeOn(replay(), scheduler);
13832-
}
13833-
1383413635
/**
1383513636
* Returns a Flowable that mirrors the source Publisher, resubscribing to it if it calls {@code onError}
1383613637
* (infinite retry count).

0 commit comments

Comments
 (0)