diff --git a/src/main/java/io/reactivex/rxjava3/core/Completable.java b/src/main/java/io/reactivex/rxjava3/core/Completable.java index 9d785d96d5..3e8c84835f 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Completable.java +++ b/src/main/java/io/reactivex/rxjava3/core/Completable.java @@ -151,7 +151,7 @@ public static Completable ambArray(@NonNull CompletableSource... sources) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Completable amb(@NonNull Iterable sources) { + public static Completable amb(@NonNull Iterable<@NonNull ? extends CompletableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new CompletableAmb(null, sources)); @@ -216,7 +216,7 @@ public static Completable concatArray(@NonNull CompletableSource... sources) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Completable concat(@NonNull Iterable sources) { + public static Completable concat(@NonNull Iterable<@NonNull ? extends CompletableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new CompletableConcatIterable(sources)); @@ -241,7 +241,7 @@ public static Completable concat(@NonNull Iterable @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) @NonNull - public static Completable concat(@NonNull Publisher sources) { + public static Completable concat(@NonNull Publisher<@NonNull ? extends CompletableSource> sources) { return concat(sources, 2); } @@ -266,7 +266,7 @@ public static Completable concat(@NonNull Publisher @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - public static Completable concat(@NonNull Publisher sources, int prefetch) { + public static Completable concat(@NonNull Publisher<@NonNull ? extends CompletableSource> sources, int prefetch) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new CompletableConcat(sources, prefetch)); @@ -733,7 +733,7 @@ public static Completable mergeArray(@NonNull CompletableSource... sources) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Completable merge(@NonNull Iterable sources) { + public static Completable merge(@NonNull Iterable<@NonNull ? extends CompletableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new CompletableMergeIterable(sources)); } @@ -772,7 +772,7 @@ public static Completable merge(@NonNull Iterable s @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.UNBOUNDED_IN) @NonNull - public static Completable merge(@NonNull Publisher sources) { + public static Completable merge(@NonNull Publisher<@NonNull ? extends CompletableSource> sources) { return merge0(sources, Integer.MAX_VALUE, false); } @@ -813,7 +813,7 @@ public static Completable merge(@NonNull Publisher @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) @NonNull - public static Completable merge(@NonNull Publisher sources, int maxConcurrency) { + public static Completable merge(@NonNull Publisher<@NonNull ? extends CompletableSource> sources, int maxConcurrency) { return merge0(sources, maxConcurrency, false); } @@ -840,7 +840,7 @@ public static Completable merge(@NonNull Publisher @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - private static Completable merge0(@NonNull Publisher sources, int maxConcurrency, boolean delayErrors) { + private static Completable merge0(@NonNull Publisher<@NonNull ? extends CompletableSource> sources, int maxConcurrency, boolean delayErrors) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); return RxJavaPlugins.onAssembly(new CompletableMerge(sources, maxConcurrency, delayErrors)); @@ -886,7 +886,7 @@ public static Completable mergeArrayDelayError(@NonNull CompletableSource... sou @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Completable mergeDelayError(@NonNull Iterable sources) { + public static Completable mergeDelayError(@NonNull Iterable<@NonNull ? extends CompletableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new CompletableMergeDelayErrorIterable(sources)); } @@ -912,7 +912,7 @@ public static Completable mergeDelayError(@NonNull Iterable sources) { + public static Completable mergeDelayError(@NonNull Publisher<@NonNull ? extends CompletableSource> sources) { return merge0(sources, Integer.MAX_VALUE, true); } @@ -940,7 +940,7 @@ public static Completable mergeDelayError(@NonNull Publisher sources, int maxConcurrency) { + public static Completable mergeDelayError(@NonNull Publisher<@NonNull ? extends CompletableSource> sources, int maxConcurrency) { return merge0(sources, maxConcurrency, true); } @@ -1582,7 +1582,7 @@ public final Completable doOnError(@NonNull Consumer onError) @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public final Completable doOnEvent(@NonNull Consumer onEvent) { + public final Completable doOnEvent(@NonNull Consumer<@Nullable ? super Throwable> onEvent) { Objects.requireNonNull(onEvent, "onEvent is null"); return RxJavaPlugins.onAssembly(new CompletableDoOnEvent(this, onEvent)); } @@ -2083,7 +2083,7 @@ public final Completable repeatUntil(@NonNull BooleanSupplier stop) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Completable repeatWhen(@NonNull Function, ? extends Publisher> handler) { + public final Completable repeatWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return fromPublisher(toFlowable().repeatWhen(handler)); } @@ -2234,7 +2234,7 @@ public final Completable retry(@NonNull Predicate predicate) @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Completable retryWhen(@NonNull Function, ? extends Publisher> handler) { + public final Completable retryWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return fromPublisher(toFlowable().retryWhen(handler)); } diff --git a/src/main/java/io/reactivex/rxjava3/core/CompletableConverter.java b/src/main/java/io/reactivex/rxjava3/core/CompletableConverter.java index bcc00f088b..83e8f693eb 100644 --- a/src/main/java/io/reactivex/rxjava3/core/CompletableConverter.java +++ b/src/main/java/io/reactivex/rxjava3/core/CompletableConverter.java @@ -23,13 +23,12 @@ * @since 2.2 */ @FunctionalInterface -public interface CompletableConverter { +public interface CompletableConverter<@NonNull R> { /** * Applies a function to the upstream Completable and returns a converted value of type {@code R}. * * @param upstream the upstream Completable instance * @return the converted value */ - @NonNull R apply(@NonNull Completable upstream); } diff --git a/src/main/java/io/reactivex/rxjava3/core/Emitter.java b/src/main/java/io/reactivex/rxjava3/core/Emitter.java index 0fc2b47c0d..e9ea2a1827 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Emitter.java +++ b/src/main/java/io/reactivex/rxjava3/core/Emitter.java @@ -25,7 +25,7 @@ * * @param the value type emitted */ -public interface Emitter { +public interface Emitter<@NonNull T> { /** * Signal a normal value. diff --git a/src/main/java/io/reactivex/rxjava3/core/Flowable.java b/src/main/java/io/reactivex/rxjava3/core/Flowable.java index 56fa2e63f2..486b0cb629 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Flowable.java +++ b/src/main/java/io/reactivex/rxjava3/core/Flowable.java @@ -150,7 +150,7 @@ * @see ParallelFlowable * @see io.reactivex.rxjava3.subscribers.DisposableSubscriber */ -public abstract class Flowable implements Publisher { +public abstract class Flowable<@NonNull T> implements Publisher { /** The default buffer size. */ static final int BUFFER_SIZE; static { @@ -183,7 +183,7 @@ public abstract class Flowable implements Publisher { @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable amb(@NonNull Iterable> sources) { + public static Flowable amb(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new FlowableAmb<>(null, sources)); } @@ -215,7 +215,7 @@ public static Flowable amb(@NonNull Iterable Flowable ambArray(Publisher... sources) { + public static Flowable ambArray(Publisher<@NonNull ? extends T>... sources) { Objects.requireNonNull(sources, "sources is null"); int len = sources.length; if (len == 0) { @@ -280,7 +280,7 @@ public static int bufferSize() { @CheckReturnValue @BackpressureSupport(BackpressureKind.FULL) @NonNull - public static Flowable combineLatestArray(@NonNull Publisher[] sources, @NonNull Function combiner) { + public static Flowable combineLatestArray(@NonNull Publisher<@NonNull ? extends T>[] sources, @NonNull Function combiner) { return combineLatestArray(sources, combiner, bufferSize()); } @@ -329,7 +329,7 @@ public static int bufferSize() { @CheckReturnValue @NonNull @BackpressureSupport(BackpressureKind.FULL) - public static Flowable combineLatestArray(@NonNull Publisher[] sources, @NonNull Function combiner, int bufferSize) { + public static Flowable combineLatestArray(@NonNull Publisher<@NonNull ? extends T>[] sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); if (sources.length == 0) { return empty(); @@ -381,7 +381,7 @@ public static Flowable combineLatestArray(@NonNull Publisher Flowable combineLatest(@NonNull Iterable> sources, + public static Flowable combineLatest(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function combiner) { return combineLatest(sources, combiner, bufferSize()); } @@ -431,7 +431,7 @@ public static Flowable combineLatestArray(@NonNull Publisher Flowable combineLatest(@NonNull Iterable> sources, + public static Flowable combineLatest(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -481,7 +481,7 @@ public static Flowable combineLatest(@NonNull Iterable Flowable combineLatestArrayDelayError(@NonNull Publisher[] sources, + public static Flowable combineLatestArrayDelayError(@NonNull Publisher<@NonNull ? extends T>[] sources, @NonNull Function combiner) { return combineLatestArrayDelayError(sources, combiner, bufferSize()); } @@ -532,7 +532,7 @@ public static Flowable combineLatest(@NonNull Iterable Flowable combineLatestArrayDelayError(@NonNull Publisher[] sources, + public static Flowable combineLatestArrayDelayError(@NonNull Publisher<@NonNull ? extends T>[] sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -586,7 +586,7 @@ public static Flowable combineLatest(@NonNull Iterable Flowable combineLatestDelayError(@NonNull Iterable> sources, + public static Flowable combineLatestDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function combiner) { return combineLatestDelayError(sources, combiner, bufferSize()); } @@ -637,7 +637,7 @@ public static Flowable combineLatest(@NonNull Iterable Flowable combineLatestDelayError(@NonNull Iterable> sources, + public static Flowable combineLatestDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -684,7 +684,7 @@ public static Flowable combineLatestDelayError(@NonNull Iterable Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull BiFunction combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -734,8 +734,8 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Function3 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -790,8 +790,8 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Function4 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -850,9 +850,9 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, - @NonNull Publisher source5, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, + @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Function5 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -915,9 +915,9 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, - @NonNull Publisher source5, @NonNull Publisher source6, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, + @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, @NonNull Function6 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -985,10 +985,10 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, - @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, + @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Function7 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -1060,10 +1060,10 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, - @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, @NonNull Publisher source8, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, + @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Publisher<@NonNull ? extends T8> source8, @NonNull Function8 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -1140,11 +1140,11 @@ public static Flowable combineLatest( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable combineLatest( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4, - @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, @NonNull Publisher source8, - @NonNull Publisher source9, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, + @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Publisher<@NonNull ? extends T4> source4, + @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Publisher<@NonNull ? extends T8> source8, + @NonNull Publisher<@NonNull ? extends T9> source9, @NonNull Function9 combiner) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -1183,7 +1183,7 @@ public static Flowable combineLatest( @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable concat(@NonNull Iterable> sources) { + public static Flowable concat(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { Objects.requireNonNull(sources, "sources is null"); // unlike general sources, fromIterable can only throw on a boundary because it is consumed only there return fromIterable(sources).concatMapDelayError((Function)Functions.identity(), false, 2); @@ -1216,7 +1216,7 @@ public static Flowable concat(@NonNull Iterable Flowable concat(@NonNull Publisher> sources) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return concat(sources, bufferSize()); } @@ -1251,7 +1251,7 @@ public static Flowable concat(@NonNull Publisher Flowable concat(@NonNull Publisher> sources, int prefetch) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int prefetch) { return fromPublisher(sources).concatMap((Function)Functions.identity(), prefetch); } @@ -1284,7 +1284,7 @@ public static Flowable concat(@NonNull Publisher Flowable concat(@NonNull Publisher source1, @NonNull Publisher source2) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); return concatArray(source1, source2); @@ -1322,8 +1322,8 @@ public static Flowable concat(@NonNull Publisher source1, @N @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable concat( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3) { + @NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, + @NonNull Publisher<@NonNull ? extends T> source3) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -1364,8 +1364,8 @@ public static Flowable concat( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable concat( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4) { + @NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, + @NonNull Publisher<@NonNull ? extends T> source3, @NonNull Publisher<@NonNull ? extends T> source4) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -1398,7 +1398,7 @@ public static Flowable concat( @SchedulerSupport(SchedulerSupport.NONE) @SafeVarargs @NonNull - public static Flowable concatArray(@NonNull Publisher... sources) { + public static Flowable concatArray(@NonNull Publisher<@NonNull ? extends T>... sources) { Objects.requireNonNull(sources, "sources is null"); if (sources.length == 0) { return empty(); @@ -1433,7 +1433,7 @@ public static Flowable concatArray(@NonNull Publisher... sou @SchedulerSupport(SchedulerSupport.NONE) @SafeVarargs @NonNull - public static Flowable concatArrayDelayError(@NonNull Publisher... sources) { + public static Flowable concatArrayDelayError(@NonNull Publisher<@NonNull ? extends T>... sources) { Objects.requireNonNull(sources, "sources is null"); if (sources.length == 0) { return empty(); @@ -1472,7 +1472,7 @@ public static Flowable concatArrayDelayError(@NonNull Publisher Flowable concatArrayEager(@NonNull Publisher... sources) { + public static Flowable concatArrayEager(@NonNull Publisher<@NonNull ? extends T>... sources) { return concatArrayEager(bufferSize(), bufferSize(), sources); } @@ -1509,7 +1509,7 @@ public static Flowable concatArrayEager(@NonNull Publisher.. @SchedulerSupport(SchedulerSupport.NONE) @SuppressWarnings({ "rawtypes", "unchecked" }) @SafeVarargs - public static Flowable concatArrayEager(int maxConcurrency, int prefetch, @NonNull Publisher... sources) { + public static Flowable concatArrayEager(int maxConcurrency, int prefetch, @NonNull Publisher<@NonNull ? extends T>... sources) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -1545,7 +1545,7 @@ public static Flowable concatArrayEager(int maxConcurrency, int prefetch, @BackpressureSupport(BackpressureKind.FULL) @SafeVarargs @NonNull - public static Flowable concatArrayEagerDelayError(@NonNull Publisher... sources) { + public static Flowable concatArrayEagerDelayError(@NonNull Publisher<@NonNull ? extends T>... sources) { return concatArrayEagerDelayError(bufferSize(), bufferSize(), sources); } @@ -1583,7 +1583,7 @@ public static Flowable concatArrayEagerDelayError(@NonNull Publisher Flowable concatArrayEagerDelayError(int maxConcurrency, int prefetch, @NonNull Publisher... sources) { + public static Flowable concatArrayEagerDelayError(int maxConcurrency, int prefetch, @NonNull Publisher<@NonNull ? extends T>... sources) { return fromArray(sources).concatMapEagerDelayError((Function)Functions.identity(), true, maxConcurrency, prefetch); } @@ -1611,7 +1611,7 @@ public static Flowable concatArrayEagerDelayError(int maxConcurrency, int @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable concatDelayError(@NonNull Iterable> sources) { + public static Flowable concatDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { Objects.requireNonNull(sources, "sources is null"); return fromIterable(sources).concatMapDelayError((Function)Functions.identity()); } @@ -1636,7 +1636,7 @@ public static Flowable concatDelayError(@NonNull Iterable Flowable concatDelayError(@NonNull Publisher> sources) { + public static Flowable concatDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return concatDelayError(sources, bufferSize(), true); } @@ -1665,7 +1665,7 @@ public static Flowable concatDelayError(@NonNull Publisher Flowable concatDelayError(@NonNull Publisher> sources, int prefetch, boolean tillTheEnd) { + public static Flowable concatDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int prefetch, boolean tillTheEnd) { return fromPublisher(sources).concatMapDelayError((Function)Functions.identity(), tillTheEnd, prefetch); } @@ -1693,7 +1693,7 @@ public static Flowable concatDelayError(@NonNull Publisher Flowable concatEager(@NonNull Publisher> sources) { + public static Flowable concatEager(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return concatEager(sources, bufferSize(), bufferSize()); } @@ -1726,7 +1726,7 @@ public static Flowable concatEager(@NonNull Publisher Flowable concatEager(@NonNull Publisher> sources, int maxConcurrency, int prefetch) { + public static Flowable concatEager(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency, int prefetch) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -1757,7 +1757,7 @@ public static Flowable concatEager(@NonNull Publisher Flowable concatEager(@NonNull Iterable> sources) { + public static Flowable concatEager(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return concatEager(sources, bufferSize(), bufferSize()); } @@ -1790,7 +1790,7 @@ public static Flowable concatEager(@NonNull Iterable Flowable concatEager(@NonNull Iterable> sources, int maxConcurrency, int prefetch) { + public static Flowable concatEager(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency, int prefetch) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -1893,7 +1893,7 @@ public static Flowable create(@NonNull FlowableOnSubscribe source, @No @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable defer(@NonNull Supplier> supplier) { + public static Flowable defer(@NonNull Supplier> supplier) { Objects.requireNonNull(supplier, "supplier is null"); return RxJavaPlugins.onAssembly(new FlowableDefer<>(supplier)); } @@ -2178,7 +2178,7 @@ public static Flowable error(@NonNull Throwable throwable) { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static <@NonNull T> Flowable fromIterable(@NonNull Iterable source) { + public static <@NonNull T> Flowable fromIterable(@NonNull Iterable<@NonNull ? extends T> source) { Objects.requireNonNull(source, "source is null"); return RxJavaPlugins.onAssembly(new FlowableFromIterable<>(source)); } @@ -2215,7 +2215,7 @@ public static Flowable error(@NonNull Throwable throwable) { @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) @SuppressWarnings("unchecked") - public static Flowable fromPublisher(@NonNull Publisher source) { + public static Flowable fromPublisher(@NonNull Publisher<@NonNull ? extends T> source) { if (source instanceof Flowable) { return RxJavaPlugins.onAssembly((Flowable)source); } @@ -2327,7 +2327,7 @@ public static Flowable generate(@NonNull Consumer<@NonNull Emitter> ge @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable generate(@NonNull Supplier initialState, @NonNull BiConsumer> generator) { + public static Flowable generate(@NonNull Supplier initialState, @NonNull BiConsumer> generator) { Objects.requireNonNull(generator, "generator is null"); return generate(initialState, FlowableInternalHelper.simpleBiGenerator(generator), Functions.emptyConsumer()); @@ -2363,7 +2363,7 @@ public static Flowable generate(@NonNull Supplier initialState, @No @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable generate(@NonNull Supplier initialState, @NonNull BiConsumer> generator, + public static Flowable generate(@NonNull Supplier initialState, @NonNull BiConsumer> generator, @NonNull Consumer disposeState) { Objects.requireNonNull(generator, "generator is null"); return generate(initialState, FlowableInternalHelper.simpleBiGenerator(generator), disposeState); @@ -3142,7 +3142,7 @@ public static Flowable intervalRange(long start, long count, long initialD @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable merge(@NonNull Iterable> sources, int maxConcurrency, int bufferSize) { + public static Flowable merge(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency, int bufferSize) { return fromIterable(sources).flatMap((Function)Functions.identity(), false, maxConcurrency, bufferSize); } @@ -3196,7 +3196,7 @@ public static Flowable merge(@NonNull Iterable Flowable mergeArray(int maxConcurrency, int bufferSize, @NonNull Publisher... sources) { + public static Flowable mergeArray(int maxConcurrency, int bufferSize, @NonNull Publisher<@NonNull ? extends T>... sources) { return fromArray(sources).flatMap((Function)Functions.identity(), false, maxConcurrency, bufferSize); } @@ -3242,7 +3242,7 @@ public static Flowable mergeArray(int maxConcurrency, int bufferSize, @No @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable merge(@NonNull Iterable> sources) { + public static Flowable merge(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return fromIterable(sources).flatMap((Function)Functions.identity()); } @@ -3293,7 +3293,7 @@ public static Flowable merge(@NonNull Iterable Flowable merge(@NonNull Iterable> sources, int maxConcurrency) { + public static Flowable merge(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency) { return fromIterable(sources).flatMap((Function)Functions.identity(), maxConcurrency); } @@ -3340,7 +3340,7 @@ public static Flowable merge(@NonNull Iterable Flowable merge(@NonNull Publisher> sources) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return merge(sources, bufferSize()); } @@ -3393,7 +3393,7 @@ public static Flowable merge(@NonNull Publisher Flowable merge(@NonNull Publisher> sources, int maxConcurrency) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency) { return fromPublisher(sources).flatMap((Function)Functions.identity(), maxConcurrency); } @@ -3439,7 +3439,7 @@ public static Flowable merge(@NonNull Publisher Flowable mergeArray(@NonNull Publisher... sources) { + public static Flowable mergeArray(@NonNull Publisher<@NonNull ? extends T>... sources) { return fromArray(sources).flatMap((Function)Functions.identity(), sources.length); } @@ -3486,7 +3486,7 @@ public static Flowable mergeArray(@NonNull Publisher... sour @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable merge(@NonNull Publisher source1, @NonNull Publisher source2) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); return fromArray(source1, source2).flatMap((Function)Functions.identity(), false, 2); @@ -3537,7 +3537,7 @@ public static Flowable merge(@NonNull Publisher source1, @No @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable merge(@NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, @NonNull Publisher<@NonNull ? extends T> source3) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -3592,8 +3592,8 @@ public static Flowable merge(@NonNull Publisher source1, @No @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable merge( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4) { + @NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, + @NonNull Publisher<@NonNull ? extends T> source3, @NonNull Publisher<@NonNull ? extends T> source4) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -3635,7 +3635,7 @@ public static Flowable merge( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable mergeDelayError(@NonNull Iterable> sources) { + public static Flowable mergeDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return fromIterable(sources).flatMap((Function)Functions.identity(), true); } @@ -3678,7 +3678,7 @@ public static Flowable mergeDelayError(@NonNull Iterable Flowable mergeDelayError(@NonNull Iterable> sources, int maxConcurrency, int bufferSize) { + public static Flowable mergeDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency, int bufferSize) { return fromIterable(sources).flatMap((Function)Functions.identity(), true, maxConcurrency, bufferSize); } @@ -3722,7 +3722,7 @@ public static Flowable mergeDelayError(@NonNull Iterable Flowable mergeArrayDelayError(int maxConcurrency, int bufferSize, @NonNull Publisher... sources) { + public static Flowable mergeArrayDelayError(int maxConcurrency, int bufferSize, @NonNull Publisher<@NonNull ? extends T>... sources) { return fromArray(sources).flatMap((Function)Functions.identity(), true, maxConcurrency, bufferSize); } @@ -3763,7 +3763,7 @@ public static Flowable mergeArrayDelayError(int maxConcurrency, int buffe @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable mergeDelayError(@NonNull Iterable> sources, int maxConcurrency) { + public static Flowable mergeDelayError(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency) { return fromIterable(sources).flatMap((Function)Functions.identity(), true, maxConcurrency); } @@ -3801,7 +3801,7 @@ public static Flowable mergeDelayError(@NonNull Iterable Flowable mergeDelayError(@NonNull Publisher> sources) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return mergeDelayError(sources, bufferSize()); } @@ -3844,7 +3844,7 @@ public static Flowable mergeDelayError(@NonNull Publisher Flowable mergeDelayError(@NonNull Publisher> sources, int maxConcurrency) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int maxConcurrency) { return fromPublisher(sources).flatMap((Function)Functions.identity(), true, maxConcurrency); } @@ -3883,7 +3883,7 @@ public static Flowable mergeDelayError(@NonNull Publisher Flowable mergeArrayDelayError(@NonNull Publisher... sources) { + public static Flowable mergeArrayDelayError(@NonNull Publisher<@NonNull ? extends T>... sources) { return fromArray(sources).flatMap((Function)Functions.identity(), true, sources.length); } @@ -3922,7 +3922,7 @@ public static Flowable mergeArrayDelayError(@NonNull Publisher Flowable mergeDelayError(@NonNull Publisher source1, @NonNull Publisher source2) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); return fromArray(source1, source2).flatMap((Function)Functions.identity(), true, 2); @@ -3966,7 +3966,7 @@ public static Flowable mergeDelayError(@NonNull Publisher so @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable mergeDelayError(@NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, @NonNull Publisher<@NonNull ? extends T> source3) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -4014,8 +4014,8 @@ public static Flowable mergeDelayError(@NonNull Publisher so @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable mergeDelayError( - @NonNull Publisher source1, @NonNull Publisher source2, - @NonNull Publisher source3, @NonNull Publisher source4) { + @NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, + @NonNull Publisher<@NonNull ? extends T> source3, @NonNull Publisher<@NonNull ? extends T> source4) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); Objects.requireNonNull(source3, "source3 is null"); @@ -4164,7 +4164,7 @@ public static Flowable rangeLong(long start, long count) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Single sequenceEqual(@NonNull Publisher source1, @NonNull Publisher source2) { + public static Single sequenceEqual(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2) { return sequenceEqual(source1, source2, ObjectHelper.equalsPredicate(), bufferSize()); } @@ -4199,7 +4199,7 @@ public static Single sequenceEqual(@NonNull Publisher @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Single sequenceEqual(@NonNull Publisher source1, @NonNull Publisher source2, + public static Single sequenceEqual(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, @NonNull BiPredicate isEqual) { return sequenceEqual(source1, source2, isEqual, bufferSize()); } @@ -4238,7 +4238,7 @@ public static Single sequenceEqual(@NonNull Publisher @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Single sequenceEqual(@NonNull Publisher source1, @NonNull Publisher source2, + public static Single sequenceEqual(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, @NonNull BiPredicate isEqual, int bufferSize) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -4277,7 +4277,7 @@ public static Single sequenceEqual(@NonNull Publisher @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Single sequenceEqual(@NonNull Publisher source1, @NonNull Publisher source2, int bufferSize) { + public static Single sequenceEqual(@NonNull Publisher<@NonNull ? extends T> source1, @NonNull Publisher<@NonNull ? extends T> source2, int bufferSize) { return sequenceEqual(source1, source2, ObjectHelper.equalsPredicate(), bufferSize); } @@ -4320,7 +4320,7 @@ public static Single sequenceEqual(@NonNull Publisher @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable switchOnNext(@NonNull Publisher> sources, int bufferSize) { + public static Flowable switchOnNext(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int bufferSize) { return fromPublisher(sources).switchMap((Function)Functions.identity(), bufferSize); } @@ -4360,7 +4360,7 @@ public static Flowable switchOnNext(@NonNull Publisher Flowable switchOnNext(@NonNull Publisher> sources) { + public static Flowable switchOnNext(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return fromPublisher(sources).switchMap((Function)Functions.identity()); } @@ -4401,7 +4401,7 @@ public static Flowable switchOnNext(@NonNull Publisher Flowable switchOnNextDelayError(@NonNull Publisher> sources) { + public static Flowable switchOnNextDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources) { return switchOnNextDelayError(sources, bufferSize()); } @@ -4445,8 +4445,8 @@ public static Flowable switchOnNextDelayError(@NonNull Publisher Flowable switchOnNextDelayError(@NonNull Publisher> sources, int prefetch) { - return fromPublisher(sources).switchMapDelayError(Functions.>identity(), prefetch); + public static Flowable switchOnNextDelayError(@NonNull Publisher<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, int prefetch) { + return fromPublisher(sources).switchMapDelayError(Functions.>identity(), prefetch); } /** @@ -4575,7 +4575,7 @@ public static Flowable unsafeCreate(@NonNull Publisher onSubscribe) { @NonNull public static Flowable using( @NonNull Supplier resourceSupplier, - @NonNull Function> sourceSupplier, + @NonNull Function> sourceSupplier, @NonNull Consumer resourceDisposer) { return using(resourceSupplier, sourceSupplier, resourceDisposer, true); } @@ -4618,7 +4618,7 @@ public static Flowable using( @SchedulerSupport(SchedulerSupport.NONE) public static Flowable using( @NonNull Supplier resourceSupplier, - @NonNull Function> sourceSupplier, + @NonNull Function> sourceSupplier, @NonNull Consumer resourceDisposer, boolean eager) { Objects.requireNonNull(resourceSupplier, "resourceSupplier is null"); @@ -4676,7 +4676,7 @@ public static Flowable using( @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable zip(@NonNull Iterable> sources, @NonNull Function zipper) { + public static Flowable zip(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function zipper) { Objects.requireNonNull(zipper, "zipper is null"); Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new FlowableZip<>(null, sources, zipper, bufferSize(), false)); @@ -4737,7 +4737,7 @@ public static Flowable zip(@NonNull Iterable Flowable zip(@NonNull Iterable> sources, + public static Flowable zip(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ? extends T>> sources, @NonNull Function zipper, boolean delayError, int bufferSize) { Objects.requireNonNull(zipper, "zipper is null"); @@ -4800,7 +4800,7 @@ public static Flowable zip(@NonNull Iterable Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull BiFunction zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -4863,7 +4863,7 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull BiFunction zipper, boolean delayError) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -4928,7 +4928,7 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull BiFunction zipper, boolean delayError, int bufferSize) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -4994,7 +4994,7 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, @NonNull Function3 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5065,8 +5065,8 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Function4 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5141,8 +5141,8 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, @NonNull Publisher source5, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Function5 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5221,8 +5221,8 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, @NonNull Publisher source5, @NonNull Publisher source6, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, @NonNull Function6 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5305,9 +5305,9 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Function7 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5394,9 +5394,9 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, @NonNull Publisher source8, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Publisher<@NonNull ? extends T8> source8, @NonNull Function8 zipper) { Objects.requireNonNull(source1, "source1 is null"); Objects.requireNonNull(source2, "source2 is null"); @@ -5488,9 +5488,9 @@ public static Flowable zip( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public static Flowable zip( - @NonNull Publisher source1, @NonNull Publisher source2, @NonNull Publisher source3, - @NonNull Publisher source4, @NonNull Publisher source5, @NonNull Publisher source6, - @NonNull Publisher source7, @NonNull Publisher source8, @NonNull Publisher source9, + @NonNull Publisher<@NonNull ? extends T1> source1, @NonNull Publisher<@NonNull ? extends T2> source2, @NonNull Publisher<@NonNull ? extends T3> source3, + @NonNull Publisher<@NonNull ? extends T4> source4, @NonNull Publisher<@NonNull ? extends T5> source5, @NonNull Publisher<@NonNull ? extends T6> source6, + @NonNull Publisher<@NonNull ? extends T7> source7, @NonNull Publisher<@NonNull ? extends T8> source8, @NonNull Publisher<@NonNull ? extends T9> source9, @NonNull Function9 zipper) { Objects.requireNonNull(source1, "source1 is null"); @@ -5563,7 +5563,7 @@ public static Flowable zip( @SchedulerSupport(SchedulerSupport.NONE) @SafeVarargs public static Flowable zipArray(@NonNull Function zipper, - boolean delayError, int bufferSize, @NonNull Publisher... sources) { + boolean delayError, int bufferSize, @NonNull Publisher<@NonNull ? extends T>... sources) { Objects.requireNonNull(sources, "sources is null"); if (sources.length == 0) { return empty(); @@ -5631,7 +5631,7 @@ public final Single all(@NonNull Predicate predicate) { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable ambWith(@NonNull Publisher other) { + public final Flowable ambWith(@NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return ambArray(this, other); } @@ -6343,7 +6343,7 @@ public final void blockingSubscribe(@NonNull Consumer onNext, @NonNul */ @BackpressureSupport(BackpressureKind.SPECIAL) @SchedulerSupport(SchedulerSupport.NONE) - public final void blockingSubscribe(@NonNull Subscriber subscriber) { + public final void blockingSubscribe(@NonNull Subscriber<@NonNull ? super T> subscriber) { Objects.requireNonNull(subscriber, "subscriber is null"); FlowableBlockingSubscribe.subscribe(this, subscriber); } @@ -6862,7 +6862,7 @@ public final Flowable> buffer(long timespan, @NonNull TimeUnit unit, @No @NonNull public final Flowable> buffer( @NonNull Flowable openingIndicator, - @NonNull Function> closingIndicator) { + @NonNull Function> closingIndicator) { return buffer(openingIndicator, closingIndicator, ArrayListSupplier.asSupplier()); } @@ -6904,7 +6904,7 @@ public final Flowable> buffer( @NonNull public final > Flowable buffer( @NonNull Flowable openingIndicator, - @NonNull Function> closingIndicator, + @NonNull Function> closingIndicator, @NonNull Supplier bufferSupplier) { Objects.requireNonNull(openingIndicator, "openingIndicator is null"); Objects.requireNonNull(closingIndicator, "closingIndicator is null"); @@ -7335,7 +7335,7 @@ public final Flowable compose(@NonNull FlowableTransformer Flowable concatMap(@NonNull Function> mapper) { + public final Flowable concatMap(@NonNull Function> mapper) { return concatMap(mapper, 2); } @@ -7377,7 +7377,7 @@ public final Flowable concatMap(@NonNull Function Flowable concatMap(@NonNull Function> mapper, int prefetch) { + public final Flowable concatMap(@NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); if (this instanceof ScalarSupplier) { @@ -7432,7 +7432,7 @@ public final Flowable concatMap(@NonNull Function Flowable concatMap(@NonNull Function> mapper, int prefetch, @NonNull Scheduler scheduler) { + public final Flowable concatMap(@NonNull Function> mapper, int prefetch, @NonNull Scheduler scheduler) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); Objects.requireNonNull(scheduler, "scheduler is null"); @@ -7643,7 +7643,7 @@ public final Completable concatMapCompletableDelayError(@NonNull Function Flowable concatMapDelayError(@NonNull Function> mapper) { + public final Flowable concatMapDelayError(@NonNull Function> mapper) { return concatMapDelayError(mapper, true, 2); } @@ -7684,7 +7684,7 @@ public final Flowable concatMapDelayError(@NonNull Function Flowable concatMapDelayError(@NonNull Function> mapper, + public final Flowable concatMapDelayError(@NonNull Function> mapper, boolean tillTheEnd, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -7738,7 +7738,7 @@ public final Flowable concatMapDelayError(@NonNull Function Flowable concatMapDelayError(@NonNull Function> mapper, + public final Flowable concatMapDelayError(@NonNull Function> mapper, boolean tillTheEnd, int prefetch, @NonNull Scheduler scheduler) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -7771,7 +7771,7 @@ public final Flowable concatMapDelayError(@NonNull Function Flowable concatMapEager(@NonNull Function> mapper) { + public final Flowable concatMapEager(@NonNull Function> mapper) { return concatMapEager(mapper, bufferSize(), bufferSize()); } @@ -7803,7 +7803,7 @@ public final Flowable concatMapEager(@NonNull Function Flowable concatMapEager(@NonNull Function> mapper, + public final Flowable concatMapEager(@NonNull Function> mapper, int maxConcurrency, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); @@ -7839,7 +7839,7 @@ public final Flowable concatMapEager(@NonNull Function Flowable concatMapEagerDelayError(@NonNull Function> mapper, + public final Flowable concatMapEagerDelayError(@NonNull Function> mapper, boolean tillTheEnd) { return concatMapEagerDelayError(mapper, tillTheEnd, bufferSize(), bufferSize()); } @@ -7877,7 +7877,7 @@ public final Flowable concatMapEagerDelayError(@NonNull Function Flowable concatMapEagerDelayError(@NonNull Function> mapper, + public final Flowable concatMapEagerDelayError(@NonNull Function> mapper, boolean tillTheEnd, int maxConcurrency, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); @@ -7912,7 +7912,7 @@ public final Flowable concatMapEagerDelayError(@NonNull Function Flowable concatMapIterable(@NonNull Function> mapper) { + public final Flowable concatMapIterable(@NonNull Function> mapper) { return concatMapIterable(mapper, 2); } @@ -7946,7 +7946,7 @@ public final Flowable concatMapIterable(@NonNull Function Flowable concatMapIterable(@NonNull Function> mapper, int prefetch) { + public final Flowable concatMapIterable(@NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowableFlattenIterable<>(this, mapper, prefetch)); @@ -8357,7 +8357,7 @@ public final Flowable concatMapSingleDelayError(@NonNull Function concatWith(@NonNull Publisher other) { + public final Flowable concatWith(@NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return concat(this, other); } @@ -9508,7 +9508,7 @@ public final Flowable doOnEach(@NonNull Consumer<@NonNull ? super Notificatio @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable doOnEach(@NonNull Subscriber subscriber) { + public final Flowable doOnEach(@NonNull Subscriber<@NonNull ? super T> subscriber) { Objects.requireNonNull(subscriber, "subscriber is null"); return doOnEach( FlowableInternalHelper.subscriberOnNext(subscriber), @@ -9929,7 +9929,7 @@ public final Single firstOrError() { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable flatMap(@NonNull Function> mapper) { + public final Flowable flatMap(@NonNull Function> mapper) { return flatMap(mapper, false, bufferSize(), bufferSize()); } @@ -9966,7 +9966,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, boolean delayErrors) { + public final Flowable flatMap(@NonNull Function> mapper, boolean delayErrors) { return flatMap(mapper, delayErrors, bufferSize(), bufferSize()); } @@ -10005,7 +10005,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, int maxConcurrency) { + public final Flowable flatMap(@NonNull Function> mapper, int maxConcurrency) { return flatMap(mapper, false, maxConcurrency, bufferSize()); } @@ -10046,7 +10046,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, boolean delayErrors, int maxConcurrency) { + public final Flowable flatMap(@NonNull Function> mapper, boolean delayErrors, int maxConcurrency) { return flatMap(mapper, delayErrors, maxConcurrency, bufferSize()); } @@ -10090,7 +10090,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, boolean delayErrors, int maxConcurrency, int bufferSize) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); @@ -10141,9 +10141,9 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap( - @NonNull Function> onNextMapper, - @NonNull Function> onErrorMapper, - @NonNull Supplier> onCompleteSupplier) { + @NonNull Function> onNextMapper, + @NonNull Function> onErrorMapper, + @NonNull Supplier> onCompleteSupplier) { Objects.requireNonNull(onNextMapper, "onNextMapper is null"); Objects.requireNonNull(onErrorMapper, "onErrorMapper is null"); Objects.requireNonNull(onCompleteSupplier, "onCompleteSupplier is null"); @@ -10190,9 +10190,9 @@ public final Flowable flatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final Flowable flatMap( - @NonNull Function> onNextMapper, - @NonNull Function> onErrorMapper, - @NonNull Supplier> onCompleteSupplier, + @NonNull Function> onNextMapper, + @NonNull Function> onErrorMapper, + @NonNull Supplier> onCompleteSupplier, int maxConcurrency) { Objects.requireNonNull(onNextMapper, "onNextMapper is null"); Objects.requireNonNull(onErrorMapper, "onErrorMapper is null"); @@ -10234,7 +10234,7 @@ public final Flowable flatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, @NonNull BiFunction combiner) { return flatMap(mapper, combiner, false, bufferSize(), bufferSize()); } @@ -10275,7 +10275,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, @NonNull BiFunction combiner, boolean delayErrors) { return flatMap(mapper, combiner, delayErrors, bufferSize(), bufferSize()); } @@ -10321,7 +10321,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, @NonNull BiFunction combiner, boolean delayErrors, int maxConcurrency) { return flatMap(mapper, combiner, delayErrors, maxConcurrency, bufferSize()); } @@ -10369,7 +10369,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, @NonNull BiFunction combiner, boolean delayErrors, int maxConcurrency, int bufferSize) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -10416,7 +10416,7 @@ public final Flowable flatMap(@NonNull Function Flowable flatMap(@NonNull Function> mapper, + public final Flowable flatMap(@NonNull Function> mapper, @NonNull BiFunction combiner, int maxConcurrency) { return flatMap(mapper, combiner, false, maxConcurrency, bufferSize()); } @@ -10498,7 +10498,7 @@ public final Completable flatMapCompletable(@NonNull Function Flowable flatMapIterable(@NonNull Function> mapper) { + public final Flowable flatMapIterable(@NonNull Function> mapper) { return flatMapIterable(mapper, bufferSize()); } @@ -10532,7 +10532,7 @@ public final Flowable flatMapIterable(@NonNull Function Flowable flatMapIterable(@NonNull Function> mapper, int bufferSize) { + public final Flowable flatMapIterable(@NonNull Function> mapper, int bufferSize) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(bufferSize, "bufferSize"); return RxJavaPlugins.onAssembly(new FlowableFlattenIterable<>(this, mapper, bufferSize)); @@ -10572,7 +10572,7 @@ public final Flowable flatMapIterable(@NonNull Function Flowable flatMapIterable(@NonNull Function> mapper, + public final Flowable flatMapIterable(@NonNull Function> mapper, @NonNull BiFunction combiner) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -10617,7 +10617,7 @@ public final Flowable flatMapIterable(@NonNull Function Flowable flatMapIterable(@NonNull Function> mapper, + public final Flowable flatMapIterable(@NonNull Function> mapper, @NonNull BiFunction combiner, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -11349,9 +11349,9 @@ public final Flowable> groupBy(@NonNull Function Flowable groupJoin( - @NonNull Publisher other, - @NonNull Function> leftEnd, - @NonNull Function> rightEnd, + @NonNull Publisher<@NonNull ? extends TRight> other, + @NonNull Function> leftEnd, + @NonNull Function> rightEnd, @NonNull BiFunction, ? extends R> resultSelector) { Objects.requireNonNull(other, "other is null"); Objects.requireNonNull(leftEnd, "leftEnd is null"); @@ -11475,9 +11475,9 @@ public final Single isEmpty() { @BackpressureSupport(BackpressureKind.ERROR) @SchedulerSupport(SchedulerSupport.NONE) public final Flowable join( - @NonNull Publisher other, - @NonNull Function> leftEnd, - @NonNull Function> rightEnd, + @NonNull Publisher<@NonNull ? extends TRight> other, + @NonNull Function> leftEnd, + @NonNull Function> rightEnd, @NonNull BiFunction resultSelector) { Objects.requireNonNull(other, "other is null"); Objects.requireNonNull(leftEnd, "leftEnd is null"); @@ -11801,7 +11801,7 @@ public final Flowable> materialize() { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable mergeWith(@NonNull Publisher other) { + public final Flowable mergeWith(@NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return merge(this, other); } @@ -12478,7 +12478,7 @@ public final Flowable onBackpressureLatest() { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable onErrorResumeNext(@NonNull Function> resumeFunction) { + public final Flowable onErrorResumeNext(@NonNull Function> resumeFunction) { Objects.requireNonNull(resumeFunction, "resumeFunction is null"); return RxJavaPlugins.onAssembly(new FlowableOnErrorNext<>(this, resumeFunction)); } @@ -12523,7 +12523,7 @@ public final Flowable onErrorResumeNext(@NonNull Function onErrorResumeWith(@NonNull Publisher next) { + public final Flowable onErrorResumeWith(@NonNull Publisher<@NonNull ? extends T> next) { Objects.requireNonNull(next, "next is null"); return onErrorResumeNext(Functions.justFunction(next)); } @@ -12822,7 +12822,7 @@ public final Flowable publish(@NonNull Function, ? ex @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable publish(@NonNull Function, ? extends Publisher> selector, int prefetch) { + public final Flowable publish(@NonNull Function, ? extends Publisher<@NonNull ? extends R>> selector, int prefetch) { Objects.requireNonNull(selector, "selector is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowablePublishMulticast<>(this, selector, prefetch, false)); @@ -13153,7 +13153,7 @@ public final Flowable repeatUntil(@NonNull BooleanSupplier stop) { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable repeatWhen(@NonNull Function, ? extends Publisher> handler) { + public final Flowable repeatWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { Objects.requireNonNull(handler, "handler is null"); return RxJavaPlugins.onAssembly(new FlowableRepeatWhen<>(this, handler)); } @@ -14183,7 +14183,7 @@ public final Flowable retryUntil(@NonNull BooleanSupplier stop) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final Flowable retryWhen( - @NonNull Function, ? extends Publisher> handler) { + @NonNull Function, ? extends Publisher<@NonNull ?>> handler) { Objects.requireNonNull(handler, "handler is null"); return RxJavaPlugins.onAssembly(new FlowableRetryWhen<>(this, handler)); @@ -14205,10 +14205,10 @@ public final Flowable retryWhen( */ @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final void safeSubscribe(@NonNull Subscriber subscriber) { + public final void safeSubscribe(@NonNull Subscriber<@NonNull ? super T> subscriber) { Objects.requireNonNull(subscriber, "subscriber is null"); if (subscriber instanceof SafeSubscriber) { - subscribe((SafeSubscriber)subscriber); + subscribe((SafeSubscriber<@NonNull ? super T>)subscriber); } else { subscribe(new SafeSubscriber<>(subscriber)); } @@ -15169,7 +15169,7 @@ public final Flowable sorted(@NonNull Comparator<@NonNull ? super T> comparat @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable startWithIterable(@NonNull Iterable items) { + public final Flowable startWithIterable(@NonNull Iterable<@NonNull ? extends T> items) { return concatArray(fromIterable(items), this); } @@ -15198,7 +15198,7 @@ public final Flowable startWithIterable(@NonNull Iterable items) @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable startWith(@NonNull Publisher other) { + public final Flowable startWith(@NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return concatArray(other, this); } @@ -15402,9 +15402,9 @@ public final Disposable subscribe(@NonNull Consumer onNext, @NonNull @BackpressureSupport(BackpressureKind.SPECIAL) @SchedulerSupport(SchedulerSupport.NONE) @Override - public final void subscribe(@NonNull Subscriber subscriber) { + public final void subscribe(@NonNull Subscriber<@NonNull ? super T> subscriber) { if (subscriber instanceof FlowableSubscriber) { - subscribe((FlowableSubscriber)subscriber); + subscribe((FlowableSubscriber<@NonNull ? super T>)subscriber); } else { Objects.requireNonNull(subscriber, "subscriber is null"); subscribe(new StrictSubscriber<>(subscriber)); @@ -15451,10 +15451,10 @@ public final void subscribe(@NonNull Subscriber subscriber) { */ @BackpressureSupport(BackpressureKind.SPECIAL) @SchedulerSupport(SchedulerSupport.NONE) - public final void subscribe(@NonNull FlowableSubscriber subscriber) { + public final void subscribe(@NonNull FlowableSubscriber<@NonNull ? super T> subscriber) { Objects.requireNonNull(subscriber, "subscriber is null"); try { - Subscriber flowableSubscriber = RxJavaPlugins.onSubscribe(this, subscriber); + Subscriber<@NonNull ? super T> flowableSubscriber = RxJavaPlugins.onSubscribe(this, subscriber); Objects.requireNonNull(flowableSubscriber, "The RxJavaPlugins.onSubscribe hook returned a null FlowableSubscriber. Please check the handler provided to RxJavaPlugins.setOnFlowableSubscribe for invalid null returns. Further reading: https://github.com/ReactiveX/RxJava/wiki/Plugins"); @@ -15481,7 +15481,7 @@ public final void subscribe(@NonNull FlowableSubscriber subscriber) { * applied by {@link #subscribe(Subscriber)} before this method gets called. * @param subscriber the incoming {@code Subscriber}, never {@code null} */ - protected abstract void subscribeActual(@NonNull Subscriber subscriber); + protected abstract void subscribeActual(@NonNull Subscriber<@NonNull ? super T> subscriber); /** * Subscribes a given {@link Subscriber} (subclass) to this {@code Flowable} and returns the given @@ -15514,7 +15514,7 @@ public final void subscribe(@NonNull FlowableSubscriber subscriber) { @BackpressureSupport(BackpressureKind.SPECIAL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull E extends Subscriber> E subscribeWith(E subscriber) { + public final <@NonNull E extends Subscriber<@NonNull ? super T>> E subscribeWith(E subscriber) { subscribe(subscriber); return subscriber; } @@ -15620,7 +15620,7 @@ public final Flowable subscribeOn(@NonNull Scheduler scheduler, boolean reque @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable switchIfEmpty(@NonNull Publisher other) { + public final Flowable switchIfEmpty(@NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return RxJavaPlugins.onAssembly(new FlowableSwitchIfEmpty<>(this, other)); } @@ -15657,7 +15657,7 @@ public final Flowable switchIfEmpty(@NonNull Publisher other) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable switchMap(@NonNull Function> mapper) { + public final Flowable switchMap(@NonNull Function> mapper) { return switchMap(mapper, bufferSize()); } @@ -15696,7 +15696,7 @@ public final Flowable switchMap(@NonNull Function Flowable switchMap(@NonNull Function> mapper, int bufferSize) { + public final Flowable switchMap(@NonNull Function> mapper, int bufferSize) { return switchMap0(mapper, bufferSize, false); } @@ -15829,7 +15829,7 @@ public final Completable switchMapCompletableDelayError(@NonNull Function Flowable switchMapDelayError(@NonNull Function> mapper) { + public final Flowable switchMapDelayError(@NonNull Function> mapper) { return switchMapDelayError(mapper, bufferSize()); } @@ -15870,11 +15870,11 @@ public final Flowable switchMapDelayError(@NonNull Function Flowable switchMapDelayError(@NonNull Function> mapper, int bufferSize) { + public final Flowable switchMapDelayError(@NonNull Function> mapper, int bufferSize) { return switchMap0(mapper, bufferSize, true); } - Flowable switchMap0(Function> mapper, int bufferSize, boolean delayError) { + Flowable switchMap0(Function> mapper, int bufferSize, boolean delayError) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(bufferSize, "bufferSize"); if (this instanceof ScalarSupplier) { @@ -17156,7 +17156,7 @@ public final Flowable timeout(@NonNull Function Flowable timeout(@NonNull Function> itemTimeoutIndicator, @NonNull Publisher other) { + public final Flowable timeout(@NonNull Function> itemTimeoutIndicator, @NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return timeout0(null, itemTimeoutIndicator, other); } @@ -17222,7 +17222,7 @@ public final Flowable timeout(long timeout, @NonNull TimeUnit unit) { @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.COMPUTATION) - public final Flowable timeout(long timeout, @NonNull TimeUnit unit, @NonNull Publisher other) { + public final Flowable timeout(long timeout, @NonNull TimeUnit unit, @NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return timeout0(timeout, unit, other, Schedulers.computation()); } @@ -17261,7 +17261,7 @@ public final Flowable timeout(long timeout, @NonNull TimeUnit unit, @NonNull @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.CUSTOM) - public final Flowable timeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Publisher other) { + public final Flowable timeout(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler, @NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(other, "other is null"); return timeout0(timeout, unit, other, scheduler); } @@ -17384,13 +17384,13 @@ public final Flowable timeout(@NonNull Publisher firstTimeoutIndica public final Flowable timeout( @NonNull Publisher firstTimeoutIndicator, @NonNull Function> itemTimeoutIndicator, - @NonNull Publisher other) { + @NonNull Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(firstTimeoutIndicator, "firstTimeoutIndicator is null"); Objects.requireNonNull(other, "other is null"); return timeout0(firstTimeoutIndicator, itemTimeoutIndicator, other); } - private Flowable timeout0(long timeout, TimeUnit unit, Publisher other, + private Flowable timeout0(long timeout, TimeUnit unit, Publisher<@NonNull ? extends T> other, Scheduler scheduler) { Objects.requireNonNull(unit, "unit is null"); Objects.requireNonNull(scheduler, "scheduler is null"); @@ -17399,8 +17399,8 @@ private Flowable timeout0(long timeout, TimeUnit unit, Publisher private Flowable timeout0( Publisher firstTimeoutIndicator, - Function> itemTimeoutIndicator, - Publisher other) { + Function> itemTimeoutIndicator, + Publisher<@NonNull ? extends T> other) { Objects.requireNonNull(itemTimeoutIndicator, "itemTimeoutIndicator is null"); return RxJavaPlugins.onAssembly(new FlowableTimeout<>(this, firstTimeoutIndicator, itemTimeoutIndicator, other)); } @@ -18923,7 +18923,7 @@ public final Flowable> window( @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable withLatestFrom(@NonNull Publisher other, + public final Flowable withLatestFrom(@NonNull Publisher<@NonNull ? extends U> other, @NonNull BiFunction combiner) { Objects.requireNonNull(other, "other is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -19093,7 +19093,7 @@ public final Flowable> window( @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final <@NonNull R> Flowable withLatestFrom(@NonNull Publisher[] others, @NonNull Function combiner) { + public final <@NonNull R> Flowable withLatestFrom(@NonNull Publisher<@NonNull ?>[] others, @NonNull Function combiner) { Objects.requireNonNull(others, "others is null"); Objects.requireNonNull(combiner, "combiner is null"); return RxJavaPlugins.onAssembly(new FlowableWithLatestFromMany<>(this, others, combiner)); @@ -19127,7 +19127,7 @@ public final Flowable> window( @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable withLatestFrom(@NonNull Iterable> others, @NonNull Function combiner) { + public final Flowable withLatestFrom(@NonNull Iterable<@NonNull ? extends Publisher<@NonNull ?>> others, @NonNull Function combiner) { Objects.requireNonNull(others, "others is null"); Objects.requireNonNull(combiner, "combiner is null"); return RxJavaPlugins.onAssembly(new FlowableWithLatestFromMany<>(this, others, combiner)); @@ -19168,7 +19168,7 @@ public final Flowable withLatestFrom(@NonNull Iterable Flowable zipWith(@NonNull Iterable other, @NonNull BiFunction zipper) { + public final <@NonNull U, R> Flowable zipWith(@NonNull Iterable other, @NonNull BiFunction zipper) { Objects.requireNonNull(other, "other is null"); Objects.requireNonNull(zipper, "zipper is null"); return RxJavaPlugins.onAssembly(new FlowableZipIterable<>(this, other, zipper)); @@ -19218,7 +19218,7 @@ public final Flowable zipWith(@NonNull Iterable other, @NonNull Bi @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final Flowable zipWith(@NonNull Publisher other, @NonNull BiFunction zipper) { + public final Flowable zipWith(@NonNull Publisher<@NonNull ? extends U> other, @NonNull BiFunction zipper) { Objects.requireNonNull(other, "other is null"); return zip(this, other, zipper); } @@ -19270,7 +19270,7 @@ public final Flowable zipWith(@NonNull Publisher other, @ @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable zipWith(@NonNull Publisher other, + public final Flowable zipWith(@NonNull Publisher<@NonNull ? extends U> other, @NonNull BiFunction zipper, boolean delayError) { return zip(this, other, zipper, delayError); } @@ -19325,7 +19325,7 @@ public final Flowable zipWith(@NonNull Publisher other, @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable zipWith(@NonNull Publisher other, + public final Flowable zipWith(@NonNull Publisher<@NonNull ? extends U> other, @NonNull BiFunction zipper, boolean delayError, int bufferSize) { return zip(this, other, zipper, delayError, bufferSize); } @@ -19912,7 +19912,7 @@ public final Stream blockingStream(int prefetch) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Flowable concatMapStream(@NonNull Function> mapper) { + public final <@NonNull R> Flowable concatMapStream(@NonNull Function> mapper) { return flatMapStream(mapper, bufferSize()); } @@ -19967,7 +19967,7 @@ public final Stream blockingStream(int prefetch) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Flowable concatMapStream(@NonNull Function> mapper, int prefetch) { + public final <@NonNull R> Flowable concatMapStream(@NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowableFlatMapStream<>(this, mapper, prefetch)); @@ -20023,7 +20023,7 @@ public final Stream blockingStream(int prefetch) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Flowable flatMapStream(@NonNull Function> mapper) { + public final <@NonNull R> Flowable flatMapStream(@NonNull Function> mapper) { return flatMapStream(mapper, bufferSize()); } @@ -20078,7 +20078,7 @@ public final Stream blockingStream(int prefetch) { @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Flowable flatMapStream(@NonNull Function> mapper, int prefetch) { + public final <@NonNull R> Flowable flatMapStream(@NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowableFlatMapStream<>(this, mapper, prefetch)); diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableConverter.java b/src/main/java/io/reactivex/rxjava3/core/FlowableConverter.java index 92733c3c1e..d0b1814fb8 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableConverter.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableConverter.java @@ -24,13 +24,12 @@ * @since 2.2 */ @FunctionalInterface -public interface FlowableConverter { +public interface FlowableConverter<@NonNull T, @NonNull R> { /** * Applies a function to the upstream {@link Flowable} and returns a converted value of type {@code R}. * * @param upstream the upstream {@code Flowable} instance * @return the converted value */ - @NonNull R apply(@NonNull Flowable upstream); } diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableEmitter.java b/src/main/java/io/reactivex/rxjava3/core/FlowableEmitter.java index 1221721f29..8304edca71 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableEmitter.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableEmitter.java @@ -15,7 +15,7 @@ import io.reactivex.rxjava3.annotations.*; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.functions.Cancellable; +import io.reactivex.rxjava3.functions.*; /** * Abstraction over a Reactive Streams {@link org.reactivestreams.Subscriber} that allows associating @@ -48,7 +48,7 @@ * * @param the value type to emit */ -public interface FlowableEmitter extends Emitter { +public interface FlowableEmitter<@NonNull T> extends Emitter { /** * Sets a Disposable on this emitter; any previous {@link Disposable} diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableOnSubscribe.java b/src/main/java/io/reactivex/rxjava3/core/FlowableOnSubscribe.java index 156b9f2dc7..129c6ac7b6 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableOnSubscribe.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableOnSubscribe.java @@ -22,7 +22,7 @@ * @param the value type pushed */ @FunctionalInterface -public interface FlowableOnSubscribe { +public interface FlowableOnSubscribe<@NonNull T> { /** * Called for each {@link org.reactivestreams.Subscriber Subscriber} that subscribes. diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableOperator.java b/src/main/java/io/reactivex/rxjava3/core/FlowableOperator.java index 5b5855ea2f..aed58cff89 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableOperator.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableOperator.java @@ -24,7 +24,7 @@ * @param the value type of the upstream */ @FunctionalInterface -public interface FlowableOperator { +public interface FlowableOperator<@NonNull Downstream, @NonNull Upstream> { /** * Applies a function to the child {@link Subscriber} and returns a new parent {@code Subscriber}. * @param subscriber the child {@code Subscriber} instance diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableSubscriber.java b/src/main/java/io/reactivex/rxjava3/core/FlowableSubscriber.java index 23449fbedc..38b5bf3459 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableSubscriber.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableSubscriber.java @@ -25,7 +25,7 @@ * @param the value type * @since 2.2 */ -public interface FlowableSubscriber extends Subscriber { +public interface FlowableSubscriber<@NonNull T> extends Subscriber { /** * Implementors of this method should make sure everything that needs diff --git a/src/main/java/io/reactivex/rxjava3/core/FlowableTransformer.java b/src/main/java/io/reactivex/rxjava3/core/FlowableTransformer.java index 3b98a97dad..8aa444afcc 100644 --- a/src/main/java/io/reactivex/rxjava3/core/FlowableTransformer.java +++ b/src/main/java/io/reactivex/rxjava3/core/FlowableTransformer.java @@ -24,7 +24,7 @@ * @param the downstream value type */ @FunctionalInterface -public interface FlowableTransformer { +public interface FlowableTransformer<@NonNull Upstream, @NonNull Downstream> { /** * Applies a function to the upstream {@link Flowable} and returns a {@link Publisher} with * optionally different element type. diff --git a/src/main/java/io/reactivex/rxjava3/core/Maybe.java b/src/main/java/io/reactivex/rxjava3/core/Maybe.java index 4892aa3ab0..6865558c05 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Maybe.java +++ b/src/main/java/io/reactivex/rxjava3/core/Maybe.java @@ -129,7 +129,7 @@ public abstract class Maybe implements MaybeSource { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Maybe amb(@NonNull Iterable> sources) { + public static Maybe amb(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new MaybeAmb<>(null, sources)); } @@ -186,7 +186,7 @@ public static Maybe ambArray(@NonNull MaybeSource... sources @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable concat(@NonNull Iterable> sources) { + public static Flowable concat(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new MaybeConcatIterable<>(sources)); } @@ -314,7 +314,7 @@ public static Flowable concat( @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable concat(@NonNull Publisher> sources) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends MaybeSource> sources) { return concat(sources, 2); } @@ -343,7 +343,7 @@ public static Flowable concat(@NonNull Publisher Flowable concat(@NonNull Publisher> sources, int prefetch) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends MaybeSource> sources, int prefetch) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowableConcatMapPublisher(sources, MaybeToPublisher.instance(), prefetch, ErrorMode.IMMEDIATE)); @@ -469,7 +469,7 @@ public static Flowable concatArrayEager(@NonNull MaybeSource @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable concatDelayError(@NonNull Iterable> sources) { + public static Flowable concatDelayError(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { Objects.requireNonNull(sources, "sources is null"); return Flowable.fromIterable(sources).concatMapDelayError((Function)MaybeToPublisher.instance()); } @@ -497,7 +497,7 @@ public static Flowable concatDelayError(@NonNull Iterable Flowable concatDelayError(@NonNull Publisher> sources) { + public static Flowable concatDelayError(@NonNull Publisher<@NonNull ? extends MaybeSource> sources) { return Flowable.fromPublisher(sources).concatMapDelayError((Function)MaybeToPublisher.instance()); } @@ -525,7 +525,7 @@ public static Flowable concatDelayError(@NonNull Publisher Flowable concatEager(@NonNull Iterable> sources) { + public static Flowable concatEager(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { return Flowable.fromIterable(sources).concatMapEager((Function)MaybeToPublisher.instance()); } @@ -555,7 +555,7 @@ public static Flowable concatEager(@NonNull Iterable Flowable concatEager(@NonNull Publisher> sources) { + public static Flowable concatEager(@NonNull Publisher<@NonNull ? extends MaybeSource> sources) { return Flowable.fromPublisher(sources).concatMapEager((Function)MaybeToPublisher.instance()); } @@ -1020,7 +1020,7 @@ public static Maybe fromRunnable(@NonNull Runnable run) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Flowable merge(@NonNull Iterable> sources) { + public static Flowable merge(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { return merge(Flowable.fromIterable(sources)); } @@ -1056,7 +1056,7 @@ public static Flowable merge(@NonNull Iterable Flowable merge(@NonNull Publisher> sources) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends MaybeSource> sources) { return merge(sources, Integer.MAX_VALUE); } @@ -1095,7 +1095,7 @@ public static Flowable merge(@NonNull Publisher Flowable merge(@NonNull Publisher> sources, int maxConcurrency) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends MaybeSource> sources, int maxConcurrency) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); return RxJavaPlugins.onAssembly(new FlowableFlatMapPublisher(sources, MaybeToPublisher.instance(), false, maxConcurrency, 1)); @@ -1413,7 +1413,7 @@ public static Flowable mergeArrayDelayError(@NonNull MaybeSource Flowable mergeDelayError(@NonNull Iterable> sources) { + public static Flowable mergeDelayError(@NonNull Iterable<@NonNull ? extends MaybeSource> sources) { return Flowable.fromIterable(sources).flatMap((Function)MaybeToPublisher.instance(), true); } @@ -1450,7 +1450,7 @@ public static Flowable mergeDelayError(@NonNull Iterable Flowable mergeDelayError(@NonNull Publisher> sources) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends MaybeSource> sources) { return mergeDelayError(sources, Integer.MAX_VALUE); } @@ -1491,7 +1491,7 @@ public static Flowable mergeDelayError(@NonNull Publisher Flowable mergeDelayError(@NonNull Publisher> sources, int maxConcurrency) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends MaybeSource> sources, int maxConcurrency) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); return RxJavaPlugins.onAssembly(new FlowableFlatMapPublisher(sources, MaybeToPublisher.instance(), true, maxConcurrency, 1)); @@ -1917,7 +1917,7 @@ public static Maybe wrap(@NonNull MaybeSource source) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Maybe zip(@NonNull Iterable> sources, @NonNull Function zipper) { + public static Maybe zip(@NonNull Iterable<@NonNull ? extends MaybeSource> sources, @NonNull Function zipper) { Objects.requireNonNull(zipper, "zipper is null"); Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new MaybeZipIterable<>(sources, zipper)); @@ -3028,7 +3028,7 @@ public final Maybe doOnError(@NonNull Consumer onError) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Maybe doOnEvent(@NonNull BiConsumer onEvent) { + public final Maybe doOnEvent(@NonNull BiConsumer<@Nullable ? super T, @Nullable ? super Throwable> onEvent) { Objects.requireNonNull(onEvent, "onEvent is null"); return RxJavaPlugins.onAssembly(new MaybeDoOnEvent<>(this, onEvent)); } @@ -3259,7 +3259,7 @@ public final Maybe flatMap(@NonNull Function Flowable flattenAsFlowable(@NonNull Function> mapper) { + public final Flowable flattenAsFlowable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new MaybeFlatMapIterableFlowable<>(this, mapper)); } @@ -3286,7 +3286,7 @@ public final Flowable flattenAsFlowable(@NonNull Function Observable flattenAsObservable(@NonNull Function> mapper) { + public final Observable flattenAsObservable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new MaybeFlatMapIterableObservable<>(this, mapper)); } @@ -3340,7 +3340,7 @@ public final Observable flatMapObservable(@NonNull Function Flowable flatMapPublisher(@NonNull Function> mapper) { + public final Flowable flatMapPublisher(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new MaybeFlatMapPublisher<>(this, mapper)); } @@ -4153,7 +4153,7 @@ public final Flowable repeatUntil(@NonNull BooleanSupplier stop) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable repeatWhen(@NonNull Function, ? extends Publisher> handler) { + public final Flowable repeatWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return toFlowable().repeatWhen(handler); } @@ -4366,7 +4366,7 @@ public final Maybe retryUntil(@NonNull BooleanSupplier stop) { @SchedulerSupport(SchedulerSupport.NONE) @NonNull public final Maybe retryWhen( - @NonNull Function, ? extends Publisher> handler) { + @NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return toFlowable().retryWhen(handler).singleElement(); } @@ -5188,7 +5188,7 @@ public final CompletionStage toCompletionStage(@Nullable T defaultItem) { @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) @NonNull - public final Flowable flattenStreamAsFlowable(@NonNull Function> mapper) { + public final Flowable flattenStreamAsFlowable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new MaybeFlattenStreamAsFlowable<>(this, mapper)); } @@ -5228,7 +5228,7 @@ public final Flowable flattenStreamAsFlowable(@NonNull Function Observable flattenStreamAsObservable(@NonNull Function> mapper) { + public final Observable flattenStreamAsObservable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new MaybeFlattenStreamAsObservable<>(this, mapper)); } diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeConverter.java b/src/main/java/io/reactivex/rxjava3/core/MaybeConverter.java index eefe8c0973..221e8a671a 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeConverter.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeConverter.java @@ -24,7 +24,7 @@ * @since 2.2 */ @FunctionalInterface -public interface MaybeConverter { +public interface MaybeConverter<@NonNull T, @NonNull R> { /** * Applies a function to the upstream {@link Maybe} and returns a converted value of type {@code R}. * diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeEmitter.java b/src/main/java/io/reactivex/rxjava3/core/MaybeEmitter.java index 7757e4b72a..eb7f1f7241 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeEmitter.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeEmitter.java @@ -15,7 +15,7 @@ import io.reactivex.rxjava3.annotations.*; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.functions.Cancellable; +import io.reactivex.rxjava3.functions.*; /** * Abstraction over an RxJava {@link MaybeObserver} that allows associating @@ -47,7 +47,7 @@ * * @param the value type to emit */ -public interface MaybeEmitter { +public interface MaybeEmitter<@NonNull T> { /** * Signal a success value. diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeObserver.java b/src/main/java/io/reactivex/rxjava3/core/MaybeObserver.java index 52bee5923a..b0974fa97c 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeObserver.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeObserver.java @@ -53,7 +53,7 @@ * the type of item the MaybeObserver expects to observe * @since 2.0 */ -public interface MaybeObserver { +public interface MaybeObserver<@NonNull T> { /** * Provides the {@link MaybeObserver} with the means of cancelling (disposing) the diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeOnSubscribe.java b/src/main/java/io/reactivex/rxjava3/core/MaybeOnSubscribe.java index 350d17af5d..f02756199e 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeOnSubscribe.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeOnSubscribe.java @@ -22,7 +22,7 @@ * @param the value type pushed */ @FunctionalInterface -public interface MaybeOnSubscribe { +public interface MaybeOnSubscribe<@NonNull T> { /** * Called for each {@link MaybeObserver} that subscribes. diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeOperator.java b/src/main/java/io/reactivex/rxjava3/core/MaybeOperator.java index 30da3286b6..4ddb18d1f7 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeOperator.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeOperator.java @@ -21,7 +21,7 @@ * @param the value type of the upstream */ @FunctionalInterface -public interface MaybeOperator { +public interface MaybeOperator<@NonNull Downstream, @NonNull Upstream> { /** * Applies a function to the child {@link MaybeObserver} and returns a new parent {@code MaybeObserver}. * @param observer the child {@code MaybeObserver} instance diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeSource.java b/src/main/java/io/reactivex/rxjava3/core/MaybeSource.java index f066e5d32e..da9dbf0658 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeSource.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeSource.java @@ -25,7 +25,7 @@ * @since 2.0 */ @FunctionalInterface -public interface MaybeSource { +public interface MaybeSource<@NonNull T> { /** * Subscribes the given {@link MaybeObserver} to this {@link MaybeSource} instance. diff --git a/src/main/java/io/reactivex/rxjava3/core/MaybeTransformer.java b/src/main/java/io/reactivex/rxjava3/core/MaybeTransformer.java index aebcb8353f..620076d722 100644 --- a/src/main/java/io/reactivex/rxjava3/core/MaybeTransformer.java +++ b/src/main/java/io/reactivex/rxjava3/core/MaybeTransformer.java @@ -22,7 +22,7 @@ * @param the downstream value type */ @FunctionalInterface -public interface MaybeTransformer { +public interface MaybeTransformer<@NonNull Upstream, @NonNull Downstream> { /** * Applies a function to the upstream {@link Maybe} and returns a {@link MaybeSource} with * optionally different element type. diff --git a/src/main/java/io/reactivex/rxjava3/core/Observable.java b/src/main/java/io/reactivex/rxjava3/core/Observable.java index 788c758a4a..6b118b70b5 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Observable.java +++ b/src/main/java/io/reactivex/rxjava3/core/Observable.java @@ -97,7 +97,7 @@ * @see Flowable * @see io.reactivex.rxjava3.observers.DisposableObserver */ -public abstract class Observable implements ObservableSource { +public abstract class Observable<@NonNull T> implements ObservableSource { /** * Mirrors the one {@link ObservableSource} in an {@link Iterable} of several {@code ObservableSource}s that first either emits an item or sends @@ -121,7 +121,7 @@ public abstract class Observable implements ObservableSource { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Observable amb(@NonNull Iterable> sources) { + public static Observable amb(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new ObservableAmb<>(null, sources)); } @@ -214,7 +214,7 @@ public static int bufferSize() { @SchedulerSupport(SchedulerSupport.NONE) @NonNull public static Observable combineLatest( - @NonNull Iterable> sources, + @NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function combiner) { return combineLatest(sources, combiner, bufferSize()); } @@ -262,7 +262,7 @@ public static Observable combineLatest( @NonNull @SchedulerSupport(SchedulerSupport.NONE) public static Observable combineLatest( - @NonNull Iterable> sources, + @NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -989,7 +989,7 @@ public static Observable combineLatestArrayDelayError(@NonNull Observa @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Observable combineLatestDelayError(@NonNull Iterable> sources, + public static Observable combineLatestDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function combiner) { return combineLatestDelayError(sources, combiner, bufferSize()); } @@ -1037,7 +1037,7 @@ public static Observable combineLatestDelayError(@NonNull Iterable Observable combineLatestDelayError(@NonNull Iterable> sources, + public static Observable combineLatestDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function combiner, int bufferSize) { Objects.requireNonNull(sources, "sources is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -1066,7 +1066,7 @@ public static Observable combineLatestDelayError(@NonNull Iterable Observable concat(@NonNull Iterable> sources) { + public static Observable concat(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return fromIterable(sources).concatMapDelayError((Function)Functions.identity(), false, bufferSize()); } @@ -1424,7 +1424,7 @@ public static Observable concatArrayEagerDelayError(int maxConcurrency, i @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Observable concatDelayError(@NonNull Iterable> sources) { + public static Observable concatDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { Objects.requireNonNull(sources, "sources is null"); return concatDelayError(fromIterable(sources)); } @@ -1557,7 +1557,7 @@ public static Observable concatEager(@NonNull ObservableSource Observable concatEager(@NonNull Iterable> sources) { + public static Observable concatEager(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { return concatEager(sources, bufferSize(), bufferSize()); } @@ -1587,7 +1587,7 @@ public static Observable concatEager(@NonNull Iterable Observable concatEager(@NonNull Iterable> sources, int maxConcurrency, int bufferSize) { + public static Observable concatEager(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, int maxConcurrency, int bufferSize) { return fromIterable(sources).concatMapEagerDelayError((Function)Functions.identity(), false, maxConcurrency, bufferSize); } @@ -1934,7 +1934,7 @@ public static Observable fromFuture(@NonNull Future future, @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Observable fromIterable(@NonNull Iterable source) { + public static Observable fromIterable(@NonNull Iterable<@NonNull ? extends T> source) { Objects.requireNonNull(source, "source is null"); return RxJavaPlugins.onAssembly(new ObservableFromIterable<>(source)); } @@ -1971,7 +1971,7 @@ public static Observable fromIterable(@NonNull Iterable sour @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Observable fromPublisher(@NonNull Publisher publisher) { + public static Observable fromPublisher(@NonNull Publisher<@NonNull ? extends T> publisher) { Objects.requireNonNull(publisher, "publisher is null"); return RxJavaPlugins.onAssembly(new ObservableFromPublisher<>(publisher)); } @@ -2831,7 +2831,7 @@ public static Observable just(@NonNull T item1, @NonNull T item2, @NonNul @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Observable merge(@NonNull Iterable> sources, int maxConcurrency, int bufferSize) { + public static Observable merge(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, int maxConcurrency, int bufferSize) { return fromIterable(sources).flatMap((Function)Functions.identity(), false, maxConcurrency, bufferSize); } @@ -2923,7 +2923,7 @@ public static Observable mergeArray(int maxConcurrency, int bufferSize, @ @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Observable merge(@NonNull Iterable> sources) { + public static Observable merge(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { return fromIterable(sources).flatMap((Function)Functions.identity()); } @@ -2970,7 +2970,7 @@ public static Observable merge(@NonNull Iterable Observable merge(@NonNull Iterable> sources, int maxConcurrency) { + public static Observable merge(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, int maxConcurrency) { return fromIterable(sources).flatMap((Function)Functions.identity(), maxConcurrency); } @@ -3289,7 +3289,7 @@ public static Observable mergeArray(@NonNull ObservableSource Observable mergeDelayError(@NonNull Iterable> sources) { + public static Observable mergeDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources) { return fromIterable(sources).flatMap((Function)Functions.identity(), true); } @@ -3328,7 +3328,7 @@ public static Observable mergeDelayError(@NonNull Iterable Observable mergeDelayError(@NonNull Iterable> sources, int maxConcurrency, int bufferSize) { + public static Observable mergeDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, int maxConcurrency, int bufferSize) { return fromIterable(sources).flatMap((Function)Functions.identity(), true, maxConcurrency, bufferSize); } @@ -3405,7 +3405,7 @@ public static Observable mergeArrayDelayError(int maxConcurrency, int buf @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Observable mergeDelayError(@NonNull Iterable> sources, int maxConcurrency) { + public static Observable mergeDelayError(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, int maxConcurrency) { return fromIterable(sources).flatMap((Function)Functions.identity(), true, maxConcurrency); } @@ -4261,7 +4261,7 @@ public static Observable wrap(@NonNull ObservableSource source) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public static Observable zip(@NonNull Iterable> sources, @NonNull Function zipper) { + public static Observable zip(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function zipper) { Objects.requireNonNull(zipper, "zipper is null"); Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new ObservableZip<>(null, sources, zipper, bufferSize(), false)); @@ -4322,7 +4322,7 @@ public static Observable zip(@NonNull Iterable Observable zip(@NonNull Iterable> sources, + public static Observable zip(@NonNull Iterable<@NonNull ? extends ObservableSource> sources, @NonNull Function zipper, boolean delayError, int bufferSize) { Objects.requireNonNull(zipper, "zipper is null"); @@ -7107,7 +7107,7 @@ public final Completable concatMapCompletableDelayError(@NonNull Function Observable concatMapIterable(@NonNull Function> mapper) { + public final Observable concatMapIterable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new ObservableFlattenIterable<>(this, mapper)); } @@ -9310,7 +9310,7 @@ public final Completable flatMapCompletable(@NonNull Function Observable flatMapIterable(@NonNull Function> mapper) { + public final Observable flatMapIterable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new ObservableFlattenIterable<>(this, mapper)); } @@ -9344,7 +9344,7 @@ public final Observable flatMapIterable(@NonNull Function Observable flatMapIterable(@NonNull Function> mapper, + public final Observable flatMapIterable(@NonNull Function> mapper, @NonNull BiFunction combiner) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(combiner, "combiner is null"); @@ -12725,7 +12725,7 @@ public final Observable sorted(@NonNull Comparator sortFunction) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Observable startWithIterable(@NonNull Iterable items) { + public final Observable startWithIterable(@NonNull Iterable<@NonNull ? extends T> items) { return concatArray(fromIterable(items), this); } @@ -16163,7 +16163,7 @@ public final Observable withLatestFrom(@NonNull ObservableSource[] oth @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Observable withLatestFrom(@NonNull Iterable> others, @NonNull Function combiner) { + public final Observable withLatestFrom(@NonNull Iterable<@NonNull ? extends ObservableSource> others, @NonNull Function combiner) { Objects.requireNonNull(others, "others is null"); Objects.requireNonNull(combiner, "combiner is null"); return RxJavaPlugins.onAssembly(new ObservableWithLatestFromMany<>(this, others, combiner)); @@ -16199,7 +16199,7 @@ public final Observable withLatestFrom(@NonNull Iterable Observable zipWith(@NonNull Iterable other, @NonNull BiFunction zipper) { + public final <@NonNull U, R> Observable zipWith(@NonNull Iterable other, @NonNull BiFunction zipper) { Objects.requireNonNull(other, "other is null"); Objects.requireNonNull(zipper, "zipper is null"); return RxJavaPlugins.onAssembly(new ObservableZipIterable<>(this, other, zipper)); @@ -16853,7 +16853,7 @@ public final Stream blockingStream(int capacityHint) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Observable concatMapStream(@NonNull Function> mapper) { + public final <@NonNull R> Observable concatMapStream(@NonNull Function> mapper) { return flatMapStream(mapper); } @@ -16900,7 +16900,7 @@ public final Stream blockingStream(int capacityHint) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final <@NonNull R> Observable flatMapStream(@NonNull Function> mapper) { + public final <@NonNull R> Observable flatMapStream(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new ObservableFlatMapStream<>(this, mapper)); } diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableConverter.java b/src/main/java/io/reactivex/rxjava3/core/ObservableConverter.java index acdde63b29..7ab3a30a74 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableConverter.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableConverter.java @@ -24,13 +24,12 @@ * @since 2.2 */ @FunctionalInterface -public interface ObservableConverter { +public interface ObservableConverter<@NonNull T, @NonNull R> { /** * Applies a function to the upstream {@link Observable} and returns a converted value of type {@code R}. * * @param upstream the upstream {@code Observable} instance * @return the converted value */ - @NonNull R apply(@NonNull Observable upstream); } diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableEmitter.java b/src/main/java/io/reactivex/rxjava3/core/ObservableEmitter.java index 776d6963d9..1ce0b93687 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableEmitter.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableEmitter.java @@ -15,7 +15,7 @@ import io.reactivex.rxjava3.annotations.*; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.functions.Cancellable; +import io.reactivex.rxjava3.functions.*; /** * Abstraction over an RxJava {@link Observer} that allows associating @@ -47,7 +47,7 @@ * * @param the value type to emit */ -public interface ObservableEmitter extends Emitter { +public interface ObservableEmitter<@NonNull T> extends Emitter { /** * Sets a {@link Disposable} on this emitter; any previous {@code Disposable} diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableOnSubscribe.java b/src/main/java/io/reactivex/rxjava3/core/ObservableOnSubscribe.java index bcde496462..de98fe0817 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableOnSubscribe.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableOnSubscribe.java @@ -22,7 +22,7 @@ * @param the value type pushed */ @FunctionalInterface -public interface ObservableOnSubscribe { +public interface ObservableOnSubscribe<@NonNull T> { /** * Called for each {@link Observer} that subscribes. diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableOperator.java b/src/main/java/io/reactivex/rxjava3/core/ObservableOperator.java index ff9dbc5852..749bfa1a70 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableOperator.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableOperator.java @@ -22,7 +22,7 @@ * @param the value type of the upstream */ @FunctionalInterface -public interface ObservableOperator { +public interface ObservableOperator<@NonNull Downstream, @NonNull Upstream> { /** * Applies a function to the child {@link Observer} and returns a new parent {@code Observer}. * @param observer the child {@code Observer} instance diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableSource.java b/src/main/java/io/reactivex/rxjava3/core/ObservableSource.java index c2309e5b8d..89603f8e9c 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableSource.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableSource.java @@ -22,7 +22,7 @@ * @since 2.0 */ @FunctionalInterface -public interface ObservableSource { +public interface ObservableSource<@NonNull T> { /** * Subscribes the given {@link Observer} to this {@link ObservableSource} instance. diff --git a/src/main/java/io/reactivex/rxjava3/core/ObservableTransformer.java b/src/main/java/io/reactivex/rxjava3/core/ObservableTransformer.java index 18ce5e02c9..e6686e2e97 100644 --- a/src/main/java/io/reactivex/rxjava3/core/ObservableTransformer.java +++ b/src/main/java/io/reactivex/rxjava3/core/ObservableTransformer.java @@ -22,7 +22,7 @@ * @param the downstream value type */ @FunctionalInterface -public interface ObservableTransformer { +public interface ObservableTransformer<@NonNull Upstream, @NonNull Downstream> { /** * Applies a function to the upstream {@link Observable} and returns an {@link ObservableSource} with * optionally different element type. diff --git a/src/main/java/io/reactivex/rxjava3/core/Observer.java b/src/main/java/io/reactivex/rxjava3/core/Observer.java index de02f8ac88..dd4fb58711 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Observer.java +++ b/src/main/java/io/reactivex/rxjava3/core/Observer.java @@ -73,7 +73,7 @@ * @param * the type of item the Observer expects to observe */ -public interface Observer { +public interface Observer<@NonNull T> { /** * Provides the {@link Observer} with the means of cancelling (disposing) the diff --git a/src/main/java/io/reactivex/rxjava3/core/Single.java b/src/main/java/io/reactivex/rxjava3/core/Single.java index a1fae2e6fc..b5dde711ba 100644 --- a/src/main/java/io/reactivex/rxjava3/core/Single.java +++ b/src/main/java/io/reactivex/rxjava3/core/Single.java @@ -113,7 +113,7 @@ * @since 2.0 * @see io.reactivex.rxjava3.observers.DisposableSingleObserver */ -public abstract class Single implements SingleSource { +public abstract class Single<@NonNull T> implements SingleSource { /** * Runs multiple {@link SingleSource}s and signals the events of the first one that signals (disposing @@ -134,7 +134,7 @@ public abstract class Single implements SingleSource { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Single amb(@NonNull Iterable> sources) { + public static Single amb(@NonNull Iterable<@NonNull ? extends SingleSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new SingleAmb<>(null, sources)); } @@ -193,7 +193,7 @@ public static Single ambArray(@NonNull SingleSource... sourc @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - public static Flowable concat(@NonNull Iterable> sources) { + public static Flowable concat(@NonNull Iterable<@NonNull ? extends SingleSource> sources) { return concat(Flowable.fromIterable(sources)); } @@ -243,7 +243,7 @@ public static Observable concat(@NonNull ObservableSource Flowable concat(@NonNull Publisher> sources) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends SingleSource> sources) { return concat(sources, 2); } @@ -272,7 +272,7 @@ public static Flowable concat(@NonNull Publisher Flowable concat(@NonNull Publisher> sources, int prefetch) { + public static Flowable concat(@NonNull Publisher<@NonNull ? extends SingleSource> sources, int prefetch) { Objects.requireNonNull(sources, "sources is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new FlowableConcatMapPublisher(sources, SingleInternalHelper.toFlowable(), prefetch, ErrorMode.IMMEDIATE)); @@ -465,7 +465,7 @@ public static Flowable concatArrayEager(@NonNull SingleSource Flowable concatEager(@NonNull Publisher> sources) { + public static Flowable concatEager(@NonNull Publisher<@NonNull ? extends SingleSource> sources) { return Flowable.fromPublisher(sources).concatMapEager(SingleInternalHelper.toFlowable()); } @@ -492,7 +492,7 @@ public static Flowable concatEager(@NonNull Publisher Flowable concatEager(@NonNull Iterable> sources) { + public static Flowable concatEager(@NonNull Iterable<@NonNull ? extends SingleSource> sources) { return Flowable.fromIterable(sources).concatMapEager(SingleInternalHelper.toFlowable()); } @@ -765,7 +765,7 @@ public static Single error(@NonNull Throwable exception) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Single fromPublisher(@NonNull Publisher publisher) { + public static Single fromPublisher(@NonNull Publisher<@NonNull ? extends T> publisher) { Objects.requireNonNull(publisher, "publisher is null"); return RxJavaPlugins.onAssembly(new SingleFromPublisher<>(publisher)); } @@ -898,7 +898,7 @@ public static Single fromObservable(@NonNull ObservableSource Flowable merge(@NonNull Iterable> sources) { + public static Flowable merge(@NonNull Iterable<@NonNull ? extends SingleSource> sources) { return merge(Flowable.fromIterable(sources)); } @@ -938,7 +938,7 @@ public static Flowable merge(@NonNull Iterable Flowable merge(@NonNull Publisher> sources) { + public static Flowable merge(@NonNull Publisher<@NonNull ? extends SingleSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new FlowableFlatMapPublisher(sources, SingleInternalHelper.toFlowable(), false, Integer.MAX_VALUE, Flowable.bufferSize())); } @@ -1155,7 +1155,7 @@ public static Flowable merge( @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public static Flowable mergeDelayError(@NonNull Iterable> sources) { + public static Flowable mergeDelayError(@NonNull Iterable<@NonNull ? extends SingleSource> sources) { return mergeDelayError(Flowable.fromIterable(sources)); } @@ -1183,7 +1183,7 @@ public static Flowable mergeDelayError(@NonNull Iterable Flowable mergeDelayError(@NonNull Publisher> sources) { + public static Flowable mergeDelayError(@NonNull Publisher<@NonNull ? extends SingleSource> sources) { Objects.requireNonNull(sources, "sources is null"); return RxJavaPlugins.onAssembly(new FlowableFlatMapPublisher(sources, SingleInternalHelper.toFlowable(), true, Integer.MAX_VALUE, Flowable.bufferSize())); } @@ -1564,7 +1564,7 @@ public static Single wrap(@NonNull SingleSource source) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public static Single zip(@NonNull Iterable> sources, + public static Single zip(@NonNull Iterable<@NonNull ? extends SingleSource> sources, @NonNull Function zipper) { Objects.requireNonNull(zipper, "zipper is null"); Objects.requireNonNull(sources, "sources is null"); @@ -2654,7 +2654,7 @@ public final Single doOnSuccess(@NonNull Consumer onSuccess) { @CheckReturnValue @NonNull @SchedulerSupport(SchedulerSupport.NONE) - public final Single doOnEvent(@NonNull BiConsumer onEvent) { + public final Single doOnEvent(@NonNull BiConsumer<@Nullable ? super T, @Nullable ? super Throwable> onEvent) { Objects.requireNonNull(onEvent, "onEvent is null"); return RxJavaPlugins.onAssembly(new SingleDoOnEvent<>(this, onEvent)); } @@ -2806,7 +2806,7 @@ public final Maybe flatMapMaybe(@NonNull Function Flowable flatMapPublisher(@NonNull Function> mapper) { + public final Flowable flatMapPublisher(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new SingleFlatMapPublisher<>(this, mapper)); } @@ -2837,7 +2837,7 @@ public final Flowable flatMapPublisher(@NonNull Function Flowable flattenAsFlowable(@NonNull Function> mapper) { + public final Flowable flattenAsFlowable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new SingleFlatMapIterableFlowable<>(this, mapper)); } @@ -2865,7 +2865,7 @@ public final Flowable flattenAsFlowable(@NonNull Function Observable flattenAsObservable(@NonNull Function<@NonNull ? super T, @NonNull ? extends Iterable> mapper) { + public final <@NonNull U> Observable flattenAsObservable(@NonNull Function<@NonNull ? super T, @NonNull ? extends Iterable<@NonNull ? extends U>> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new SingleFlatMapIterableObservable<>(this, mapper)); } @@ -3465,7 +3465,7 @@ public final Flowable repeat(long times) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Flowable repeatWhen(@NonNull Function, ? extends Publisher> handler) { + public final Flowable repeatWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return toFlowable().repeatWhen(handler); } @@ -3649,7 +3649,7 @@ public final Single retry(@NonNull Predicate predicate) { @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final Single retryWhen(@NonNull Function, ? extends Publisher> handler) { + public final Single retryWhen(@NonNull Function, ? extends Publisher<@NonNull ?>> handler) { return toSingle(toFlowable().retryWhen(handler)); } @@ -4410,7 +4410,7 @@ public final CompletionStage toCompletionStage() { @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) @NonNull - public final Flowable flattenStreamAsFlowable(@NonNull Function> mapper) { + public final Flowable flattenStreamAsFlowable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new SingleFlattenStreamAsFlowable<>(this, mapper)); } @@ -4451,7 +4451,7 @@ public final Flowable flattenStreamAsFlowable(@NonNull Function Observable flattenStreamAsObservable(@NonNull Function> mapper) { + public final Observable flattenStreamAsObservable(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new SingleFlattenStreamAsObservable<>(this, mapper)); } diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleConverter.java b/src/main/java/io/reactivex/rxjava3/core/SingleConverter.java index eb100b6c87..ce3a446452 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleConverter.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleConverter.java @@ -24,13 +24,12 @@ * @since 2.2 */ @FunctionalInterface -public interface SingleConverter { +public interface SingleConverter<@NonNull T, @NonNull R> { /** * Applies a function to the upstream {@link Single} and returns a converted value of type {@code R}. * * @param upstream the upstream {@code Single} instance * @return the converted value */ - @NonNull R apply(@NonNull Single upstream); } diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleEmitter.java b/src/main/java/io/reactivex/rxjava3/core/SingleEmitter.java index bb3768243d..c8d0a79ec3 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleEmitter.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleEmitter.java @@ -15,7 +15,7 @@ import io.reactivex.rxjava3.annotations.*; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.functions.Cancellable; +import io.reactivex.rxjava3.functions.*; /** * Abstraction over an RxJava {@link SingleObserver} that allows associating @@ -47,7 +47,7 @@ * * @param the value type to emit */ -public interface SingleEmitter { +public interface SingleEmitter<@NonNull T> { /** * Signal a success value. diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleObserver.java b/src/main/java/io/reactivex/rxjava3/core/SingleObserver.java index d2d788d38f..281c15e531 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleObserver.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleObserver.java @@ -50,7 +50,7 @@ * the type of item the SingleObserver expects to observe * @since 2.0 */ -public interface SingleObserver { +public interface SingleObserver<@NonNull T> { /** * Provides the {@link SingleObserver} with the means of cancelling (disposing) the diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleOnSubscribe.java b/src/main/java/io/reactivex/rxjava3/core/SingleOnSubscribe.java index 7a6a5adf68..14ff5e1f97 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleOnSubscribe.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleOnSubscribe.java @@ -22,7 +22,7 @@ * @param the value type pushed */ @FunctionalInterface -public interface SingleOnSubscribe { +public interface SingleOnSubscribe<@NonNull T> { /** * Called for each {@link SingleObserver} that subscribes. diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleOperator.java b/src/main/java/io/reactivex/rxjava3/core/SingleOperator.java index de2f38f23d..f3975b3a7f 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleOperator.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleOperator.java @@ -22,7 +22,7 @@ * @param the value type of the upstream */ @FunctionalInterface -public interface SingleOperator { +public interface SingleOperator<@NonNull Downstream, @NonNull Upstream> { /** * Applies a function to the child {@link SingleObserver} and returns a new parent {@code SingleObserver}. * @param observer the child {@code SingleObserver} instance diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleSource.java b/src/main/java/io/reactivex/rxjava3/core/SingleSource.java index b4c923905d..bbeeaac40b 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleSource.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleSource.java @@ -25,7 +25,7 @@ * @since 2.0 */ @FunctionalInterface -public interface SingleSource { +public interface SingleSource<@NonNull T> { /** * Subscribes the given {@link SingleObserver} to this {@link SingleSource} instance. diff --git a/src/main/java/io/reactivex/rxjava3/core/SingleTransformer.java b/src/main/java/io/reactivex/rxjava3/core/SingleTransformer.java index 1f0d478a0e..f3edca3430 100644 --- a/src/main/java/io/reactivex/rxjava3/core/SingleTransformer.java +++ b/src/main/java/io/reactivex/rxjava3/core/SingleTransformer.java @@ -22,7 +22,7 @@ * @param the downstream value type */ @FunctionalInterface -public interface SingleTransformer { +public interface SingleTransformer<@NonNull Upstream, @NonNull Downstream> { /** * Applies a function to the upstream {@link Single} and returns a {@link SingleSource} with * optionally different element type. diff --git a/src/main/java/io/reactivex/rxjava3/functions/BiConsumer.java b/src/main/java/io/reactivex/rxjava3/functions/BiConsumer.java index 7fa60ef4c7..85ce3dbd17 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/BiConsumer.java +++ b/src/main/java/io/reactivex/rxjava3/functions/BiConsumer.java @@ -13,13 +13,15 @@ package io.reactivex.rxjava3.functions; +import io.reactivex.rxjava3.annotations.NonNull; + /** * A functional interface (callback) that accepts two values (of possibly different types). * @param the first value type * @param the second value type */ @FunctionalInterface -public interface BiConsumer { +public interface BiConsumer<@NonNull T1, @NonNull T2> { /** * Performs an operation on the given values. diff --git a/src/main/java/io/reactivex/rxjava3/functions/BiFunction.java b/src/main/java/io/reactivex/rxjava3/functions/BiFunction.java index 174cc3c6d9..0724ef5bd1 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/BiFunction.java +++ b/src/main/java/io/reactivex/rxjava3/functions/BiFunction.java @@ -22,7 +22,7 @@ * @param the result type */ @FunctionalInterface -public interface BiFunction { +public interface BiFunction<@NonNull T1, @NonNull T2, @NonNull R> { /** * Calculate a value based on the input values. @@ -31,6 +31,5 @@ public interface BiFunction { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2) throws Throwable; + R apply(T1 t1, T2 t2) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/BiPredicate.java b/src/main/java/io/reactivex/rxjava3/functions/BiPredicate.java index fc41682ef5..393ec86ab7 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/BiPredicate.java +++ b/src/main/java/io/reactivex/rxjava3/functions/BiPredicate.java @@ -21,7 +21,7 @@ * @param the second value */ @FunctionalInterface -public interface BiPredicate { +public interface BiPredicate<@NonNull T1, @NonNull T2> { /** * Test the given input values and return a boolean. diff --git a/src/main/java/io/reactivex/rxjava3/functions/Consumer.java b/src/main/java/io/reactivex/rxjava3/functions/Consumer.java index 788622c170..bf245bdcb7 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Consumer.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Consumer.java @@ -13,12 +13,14 @@ package io.reactivex.rxjava3.functions; +import io.reactivex.rxjava3.annotations.NonNull; + /** * A functional interface (callback) that accepts a single value. * @param the value type */ @FunctionalInterface -public interface Consumer { +public interface Consumer<@NonNull T> { /** * Consume the given value. * @param t the value diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function.java b/src/main/java/io/reactivex/rxjava3/functions/Function.java index d81a2dec52..0f8b2fe39a 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function.java @@ -23,12 +23,12 @@ * @param the output value type */ @FunctionalInterface -public interface Function { +public interface Function<@NonNull T, @NonNull R> { /** * Apply some calculation to the input value and return some other value. * @param t the input value * @return the output value * @throws Throwable if the implementation wishes to throw any type of exception */ - R apply(@NonNull T t) throws Throwable; + R apply(T t) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function3.java b/src/main/java/io/reactivex/rxjava3/functions/Function3.java index cdc65112e7..fb1fe5aa76 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function3.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function3.java @@ -23,7 +23,7 @@ * @param the result type */ @FunctionalInterface -public interface Function3 { +public interface Function3<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -32,6 +32,5 @@ public interface Function3 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function4.java b/src/main/java/io/reactivex/rxjava3/functions/Function4.java index 84c3ab1449..9c0af4737d 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function4.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function4.java @@ -24,7 +24,7 @@ * @param the result type */ @FunctionalInterface -public interface Function4 { +public interface Function4<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -34,6 +34,5 @@ public interface Function4 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function5.java b/src/main/java/io/reactivex/rxjava3/functions/Function5.java index 77f2ff7220..fddaa28152 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function5.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function5.java @@ -25,7 +25,7 @@ * @param the result type */ @FunctionalInterface -public interface Function5 { +public interface Function5<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -36,6 +36,5 @@ public interface Function5 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4, @NonNull T5 t5) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function6.java b/src/main/java/io/reactivex/rxjava3/functions/Function6.java index 50c25f3df9..1f6ad10d20 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function6.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function6.java @@ -26,7 +26,7 @@ * @param the result type */ @FunctionalInterface -public interface Function6 { +public interface Function6<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -38,6 +38,5 @@ public interface Function6 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4, @NonNull T5 t5, @NonNull T6 t6) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function7.java b/src/main/java/io/reactivex/rxjava3/functions/Function7.java index 613800a4c1..39a6b26916 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function7.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function7.java @@ -27,7 +27,7 @@ * @param the result type */ @FunctionalInterface -public interface Function7 { +public interface Function7<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -40,6 +40,5 @@ public interface Function7 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4, @NonNull T5 t5, @NonNull T6 t6, @NonNull T7 t7) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function8.java b/src/main/java/io/reactivex/rxjava3/functions/Function8.java index 2fda54ea40..907c68cdfe 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function8.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function8.java @@ -28,7 +28,7 @@ * @param the result type */ @FunctionalInterface -public interface Function8 { +public interface Function8<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -42,6 +42,5 @@ public interface Function8 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4, @NonNull T5 t5, @NonNull T6 t6, @NonNull T7 t7, @NonNull T8 t8) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Function9.java b/src/main/java/io/reactivex/rxjava3/functions/Function9.java index 3eb0779e30..a7f7518456 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Function9.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Function9.java @@ -29,7 +29,7 @@ * @param the result type */ @FunctionalInterface -public interface Function9 { +public interface Function9<@NonNull T1, @NonNull T2, @NonNull T3, @NonNull T4, @NonNull T5, @NonNull T6, @NonNull T7, @NonNull T8, @NonNull T9, @NonNull R> { /** * Calculate a value based on the input values. * @param t1 the first value @@ -44,6 +44,5 @@ public interface Function9 { * @return the result value * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull - R apply(@NonNull T1 t1, @NonNull T2 t2, @NonNull T3 t3, @NonNull T4 t4, @NonNull T5 t5, @NonNull T6 t6, @NonNull T7 t7, @NonNull T8 t8, @NonNull T9 t9) throws Throwable; + R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/IntFunction.java b/src/main/java/io/reactivex/rxjava3/functions/IntFunction.java index e01cc13ab5..9859bfd3c6 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/IntFunction.java +++ b/src/main/java/io/reactivex/rxjava3/functions/IntFunction.java @@ -19,13 +19,12 @@ * @param the returned value type */ @FunctionalInterface -public interface IntFunction { +public interface IntFunction<@NonNull T> { /** * Calculates a value based on a primitive integer input. * @param i the input value * @return the result Object * @throws Throwable if the implementation wishes to throw any type of exception */ - @NonNull T apply(int i) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Predicate.java b/src/main/java/io/reactivex/rxjava3/functions/Predicate.java index 99450f865b..550a365e60 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Predicate.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Predicate.java @@ -20,12 +20,12 @@ * @param the first value */ @FunctionalInterface -public interface Predicate { +public interface Predicate<@NonNull T> { /** * Test the given input value and return a boolean. * @param t the value * @return the boolean result * @throws Throwable if the implementation wishes to throw any type of exception */ - boolean test(@NonNull T t) throws Throwable; + boolean test(T t) throws Throwable; } diff --git a/src/main/java/io/reactivex/rxjava3/functions/Supplier.java b/src/main/java/io/reactivex/rxjava3/functions/Supplier.java index af5052ab83..5a6245f05d 100644 --- a/src/main/java/io/reactivex/rxjava3/functions/Supplier.java +++ b/src/main/java/io/reactivex/rxjava3/functions/Supplier.java @@ -13,6 +13,8 @@ package io.reactivex.rxjava3.functions; +import io.reactivex.rxjava3.annotations.NonNull; + /** * A functional interface (callback) that provides a single value or * throws an exception. @@ -23,7 +25,7 @@ * @since 3.0.0 */ @FunctionalInterface -public interface Supplier { +public interface Supplier<@NonNull T> { /** * Produces a value or throws an exception. diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/ConditionalSubscriber.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/ConditionalSubscriber.java index 2b4fe68be1..9db35aed02 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/ConditionalSubscriber.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/ConditionalSubscriber.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.FlowableSubscriber; /** @@ -25,12 +26,12 @@ * * @param the value type */ -public interface ConditionalSubscriber extends FlowableSubscriber { +public interface ConditionalSubscriber<@NonNull T> extends FlowableSubscriber { /** * Conditionally takes the value. * @param t the value to deliver * @return true if the value has been accepted, false if the value has been rejected * and the next value can be sent immediately */ - boolean tryOnNext(T t); + boolean tryOnNext(@NonNull T t); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToFlowable.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToFlowable.java index 2b7bb614e7..6ad462c706 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToFlowable.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToFlowable.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Flowable; /** @@ -32,12 +33,13 @@ * * @param the value type */ -public interface FuseToFlowable { +public interface FuseToFlowable<@NonNull T> { /** * Returns a (direct) Flowable for the operator. *

The implementation should handle the necessary RxJavaPlugins wrapping. * @return the Flowable instance */ + @NonNull Flowable fuseToFlowable(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToMaybe.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToMaybe.java index c2db8c7de6..572255a7bc 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToMaybe.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToMaybe.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Maybe; /** @@ -32,12 +33,13 @@ * * @param the value type */ -public interface FuseToMaybe { +public interface FuseToMaybe<@NonNull T> { /** * Returns a (direct) Maybe for the operator. *

The implementation should handle the necessary RxJavaPlugins wrapping. * @return the Maybe instance */ + @NonNull Maybe fuseToMaybe(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToObservable.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToObservable.java index 8488ccf6e8..567d3c9a7c 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToObservable.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/FuseToObservable.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observable; /** @@ -32,12 +33,13 @@ * * @param the value type */ -public interface FuseToObservable { +public interface FuseToObservable<@NonNull T> { /** * Returns a (direct) Observable for the operator. *

The implementation should handle the necessary RxJavaPlugins wrapping. * @return the Observable instance */ + @NonNull Observable fuseToObservable(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamCompletableSource.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamCompletableSource.java index 38f199b9dc..cb6c18edd5 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamCompletableSource.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamCompletableSource.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.CompletableSource; /** @@ -25,5 +26,6 @@ public interface HasUpstreamCompletableSource { *

Allows discovering the chain of observables. * @return the source CompletableSource */ + @NonNull CompletableSource source(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamMaybeSource.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamMaybeSource.java index 0a7d36ed86..6f4fcd9085 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamMaybeSource.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamMaybeSource.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.MaybeSource; /** @@ -21,11 +22,12 @@ * * @param the value type */ -public interface HasUpstreamMaybeSource { +public interface HasUpstreamMaybeSource<@NonNull T> { /** * Returns the upstream source of this Maybe. *

Allows discovering the chain of observables. * @return the source MaybeSource */ + @NonNull MaybeSource source(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamObservableSource.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamObservableSource.java index 0ab946c4c0..8bd340a6c0 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamObservableSource.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamObservableSource.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.ObservableSource; /** @@ -21,11 +22,12 @@ * * @param the value type */ -public interface HasUpstreamObservableSource { +public interface HasUpstreamObservableSource<@NonNull T> { /** * Returns the upstream source of this Observable. *

Allows discovering the chain of observables. * @return the source ObservableSource */ + @NonNull ObservableSource source(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamPublisher.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamPublisher.java index 9afa5ce9e0..a412b37e1d 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamPublisher.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamPublisher.java @@ -15,13 +15,15 @@ import org.reactivestreams.Publisher; +import io.reactivex.rxjava3.annotations.NonNull; + /** * Interface indicating the implementor has an upstream Publisher-like source available * via {@link #source()} method. * * @param the value type */ -public interface HasUpstreamPublisher { +public interface HasUpstreamPublisher<@NonNull T> { /** * Returns the source Publisher. *

@@ -29,5 +31,6 @@ public interface HasUpstreamPublisher { * graph of sequences. * @return the source Publisher */ + @NonNull Publisher source(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamSingleSource.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamSingleSource.java index db94a572e1..dfab10fd9e 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamSingleSource.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/HasUpstreamSingleSource.java @@ -13,6 +13,7 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.SingleSource; /** @@ -21,11 +22,12 @@ * * @param the value type */ -public interface HasUpstreamSingleSource { +public interface HasUpstreamSingleSource<@NonNull T> { /** * Returns the upstream source of this Single. *

Allows discovering the chain of observables. * @return the source SingleSource */ + @NonNull SingleSource source(); } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueDisposable.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueDisposable.java index 2becb58d43..74124d918c 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueDisposable.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueDisposable.java @@ -14,6 +14,7 @@ import java.util.Queue; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.disposables.Disposable; /** @@ -51,5 +52,5 @@ * * @param the value type transmitted through the queue */ -public interface QueueDisposable extends QueueFuseable, Disposable { +public interface QueueDisposable<@NonNull T> extends QueueFuseable, Disposable { } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueFuseable.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueFuseable.java index fadc824cc7..71b93a75ad 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueFuseable.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueFuseable.java @@ -13,11 +13,13 @@ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; + /** * Represents a SimpleQueue plus the means and constants for requesting a fusion mode. * @param the value type returned by the SimpleQueue.poll() */ -public interface QueueFuseable extends SimpleQueue { +public interface QueueFuseable<@NonNull T> extends SimpleQueue { /** * Returned by the {@link #requestFusion(int)} if the upstream doesn't support * the requested mode. diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueSubscription.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueSubscription.java index 87599a6e40..923589377c 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueSubscription.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/QueueSubscription.java @@ -16,6 +16,8 @@ import org.reactivestreams.Subscription; +import io.reactivex.rxjava3.annotations.NonNull; + /** * An interface extending Queue and Subscription and allows negotiating * the fusion mode between subsequent operators of the {@code Flowable} base reactive type. @@ -53,5 +55,5 @@ * * @param the value type transmitted through the queue */ -public interface QueueSubscription extends QueueFuseable, Subscription { +public interface QueueSubscription<@NonNull T> extends QueueFuseable, Subscription { } diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/ScalarSupplier.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/ScalarSupplier.java index fc0d12323f..eda6086f87 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/ScalarSupplier.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/ScalarSupplier.java @@ -12,6 +12,7 @@ */ package io.reactivex.rxjava3.internal.fuseable; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.functions.Supplier; /** @@ -30,7 +31,7 @@ * @param the scalar value type held by the implementing reactive type */ @FunctionalInterface -public interface ScalarSupplier extends Supplier { +public interface ScalarSupplier<@NonNull T> extends Supplier { // overridden to remove the throws Throwable @Override diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimplePlainQueue.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimplePlainQueue.java index 3708580270..c3122038c1 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimplePlainQueue.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimplePlainQueue.java @@ -13,14 +13,14 @@ package io.reactivex.rxjava3.internal.fuseable; -import io.reactivex.rxjava3.annotations.Nullable; +import io.reactivex.rxjava3.annotations.*; /** * Override of the SimpleQueue interface with no throws Exception on poll(). * * @param the value type to offer and poll, not null */ -public interface SimplePlainQueue extends SimpleQueue { +public interface SimplePlainQueue<@NonNull T> extends SimpleQueue { @Nullable @Override diff --git a/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimpleQueue.java b/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimpleQueue.java index 29af5299d8..49d893031b 100644 --- a/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimpleQueue.java +++ b/src/main/java/io/reactivex/rxjava3/internal/fuseable/SimpleQueue.java @@ -20,7 +20,7 @@ * * @param the value type to offer and poll, not null */ -public interface SimpleQueue { +public interface SimpleQueue<@NonNull T> { /** * Atomically enqueue a single. diff --git a/src/main/java/io/reactivex/rxjava3/parallel/ParallelFlowable.java b/src/main/java/io/reactivex/rxjava3/parallel/ParallelFlowable.java index 17d22690ad..0fb07bac37 100644 --- a/src/main/java/io/reactivex/rxjava3/parallel/ParallelFlowable.java +++ b/src/main/java/io/reactivex/rxjava3/parallel/ParallelFlowable.java @@ -59,7 +59,7 @@ public abstract class ParallelFlowable<@NonNull T> { */ @BackpressureSupport(BackpressureKind.SPECIAL) @SchedulerSupport(SchedulerSupport.NONE) - public abstract void subscribe(@NonNull Subscriber[] subscribers); + public abstract void subscribe(@NonNull Subscriber<@NonNull ? super T>[] subscribers); /** * Returns the number of expected parallel {@link Subscriber}s. @@ -77,12 +77,12 @@ public abstract class ParallelFlowable<@NonNull T> { * @throws NullPointerException if {@code subscribers} is {@code null} * @throws IllegalArgumentException if {@code subscribers.length} is different from {@link #parallelism()} */ - protected final boolean validate(@NonNull Subscriber[] subscribers) { + protected final boolean validate(@NonNull Subscriber<@NonNull ?>[] subscribers) { Objects.requireNonNull(subscribers, "subscribers is null"); int p = parallelism(); if (subscribers.length != p) { Throwable iae = new IllegalArgumentException("parallelism = " + p + ", subscribers = " + subscribers.length); - for (Subscriber s : subscribers) { + for (Subscriber<@NonNull ?> s : subscribers) { EmptySubscription.error(iae, s); } return false; @@ -110,7 +110,7 @@ protected final boolean validate(@NonNull Subscriber[] subscribers) { @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - public static ParallelFlowable from(@NonNull Publisher source) { + public static <@NonNull T> ParallelFlowable from(@NonNull Publisher<@NonNull ? extends T> source) { return from(source, Runtime.getRuntime().availableProcessors(), Flowable.bufferSize()); } @@ -135,7 +135,7 @@ public static ParallelFlowable from(@NonNull Publisher sourc @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - public static <@NonNull T> ParallelFlowable from(@NonNull Publisher source, int parallelism) { + public static <@NonNull T> ParallelFlowable from(@NonNull Publisher<@NonNull ? extends T> source, int parallelism) { return from(source, parallelism, Flowable.bufferSize()); } @@ -164,7 +164,7 @@ public static ParallelFlowable from(@NonNull Publisher sourc @NonNull @SchedulerSupport(SchedulerSupport.NONE) @BackpressureSupport(BackpressureKind.FULL) - public static <@NonNull T> ParallelFlowable from(@NonNull Publisher source, + public static <@NonNull T> ParallelFlowable from(@NonNull Publisher<@NonNull ? extends T> source, int parallelism, int prefetch) { Objects.requireNonNull(source, "source is null"); ObjectHelper.verifyPositive(parallelism, "parallelism"); @@ -849,7 +849,7 @@ public final ParallelFlowable doAfterNext(@NonNull Consumer onAfte @NonNull @BackpressureSupport(BackpressureKind.PASS_THROUGH) @SchedulerSupport(SchedulerSupport.NONE) - public final ParallelFlowable doOnError(@NonNull Consumer onError) { + public final ParallelFlowable doOnError(@NonNull Consumer onError) { Objects.requireNonNull(onError, "onError is null"); return RxJavaPlugins.onAssembly(new ParallelPeek<>(this, Functions.emptyConsumer(), @@ -1154,7 +1154,7 @@ public final ParallelFlowable compose(@NonNull ParallelTransformer @NonNull @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) - public final ParallelFlowable flatMap(@NonNull Function> mapper) { + public final ParallelFlowable flatMap(@NonNull Function> mapper) { return flatMap(mapper, false, Flowable.bufferSize(), Flowable.bufferSize()); } @@ -1185,7 +1185,7 @@ public final ParallelFlowable flatMap(@NonNull Function ParallelFlowable flatMap( - @NonNull Function> mapper, boolean delayError) { + @NonNull Function> mapper, boolean delayError) { return flatMap(mapper, delayError, Flowable.bufferSize(), Flowable.bufferSize()); } @@ -1219,7 +1219,7 @@ public final ParallelFlowable flatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable flatMap( - @NonNull Function> mapper, boolean delayError, int maxConcurrency) { + @NonNull Function> mapper, boolean delayError, int maxConcurrency) { return flatMap(mapper, delayError, maxConcurrency, Flowable.bufferSize()); } @@ -1253,7 +1253,7 @@ public final ParallelFlowable flatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable flatMap( - @NonNull Function> mapper, + @NonNull Function> mapper, boolean delayError, int maxConcurrency, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(maxConcurrency, "maxConcurrency"); @@ -1285,7 +1285,7 @@ public final ParallelFlowable flatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable concatMap( - @NonNull Function> mapper) { + @NonNull Function> mapper) { return concatMap(mapper, 2); } @@ -1316,7 +1316,7 @@ public final ParallelFlowable concatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable concatMap( - @NonNull Function> mapper, + @NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -1349,7 +1349,7 @@ public final ParallelFlowable concatMap( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable concatMapDelayError( - @NonNull Function> mapper, + @NonNull Function> mapper, boolean tillTheEnd) { return concatMapDelayError(mapper, 2, tillTheEnd); } @@ -1382,7 +1382,7 @@ public final ParallelFlowable concatMapDelayError( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) public final ParallelFlowable concatMapDelayError( - @NonNull Function> mapper, + @NonNull Function> mapper, int prefetch, boolean tillTheEnd) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); @@ -1419,7 +1419,7 @@ public final ParallelFlowable concatMapDelayError( @BackpressureSupport(BackpressureKind.FULL) @SchedulerSupport(SchedulerSupport.NONE) @NonNull - public final ParallelFlowable flatMapIterable(@NonNull Function> mapper) { + public final ParallelFlowable flatMapIterable(@NonNull Function> mapper) { return flatMapIterable(mapper, Flowable.bufferSize()); } @@ -1455,7 +1455,7 @@ public final ParallelFlowable flatMapIterable(@NonNull Function ParallelFlowable flatMapIterable(@NonNull Function> mapper, int bufferSize) { + public final ParallelFlowable flatMapIterable(@NonNull Function> mapper, int bufferSize) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(bufferSize, "bufferSize"); return RxJavaPlugins.onAssembly(new ParallelFlatMapIterable<>(this, mapper, bufferSize)); @@ -1486,7 +1486,7 @@ public final ParallelFlowable flatMapIterable(@NonNull Function ParallelFlowable mapOptional(@NonNull Function> mapper) { + public final ParallelFlowable mapOptional(@NonNull Function> mapper) { Objects.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new ParallelMapOptional<>(this, mapper)); } @@ -1516,7 +1516,7 @@ public final ParallelFlowable mapOptional(@NonNull Function ParallelFlowable mapOptional(@NonNull Function> mapper, @NonNull ParallelFailureHandling errorHandler) { + public final ParallelFlowable mapOptional(@NonNull Function> mapper, @NonNull ParallelFailureHandling errorHandler) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(errorHandler, "errorHandler is null"); return RxJavaPlugins.onAssembly(new ParallelMapTryOptional<>(this, mapper, errorHandler)); @@ -1548,7 +1548,7 @@ public final ParallelFlowable mapOptional(@NonNull Function ParallelFlowable mapOptional(@NonNull Function> mapper, @NonNull BiFunction errorHandler) { + public final ParallelFlowable mapOptional(@NonNull Function> mapper, @NonNull BiFunction errorHandler) { Objects.requireNonNull(mapper, "mapper is null"); Objects.requireNonNull(errorHandler, "errorHandler is null"); return RxJavaPlugins.onAssembly(new ParallelMapTryOptional<>(this, mapper, errorHandler)); @@ -1604,7 +1604,7 @@ public final ParallelFlowable mapOptional(@NonNull Function ParallelFlowable flatMapStream(@NonNull Function> mapper) { + public final <@NonNull R> ParallelFlowable flatMapStream(@NonNull Function> mapper) { return flatMapStream(mapper, Flowable.bufferSize()); } @@ -1658,7 +1658,7 @@ public final ParallelFlowable mapOptional(@NonNull Function ParallelFlowable flatMapStream(@NonNull Function> mapper, int prefetch) { + public final <@NonNull R> ParallelFlowable flatMapStream(@NonNull Function> mapper, int prefetch) { Objects.requireNonNull(mapper, "mapper is null"); ObjectHelper.verifyPositive(prefetch, "prefetch"); return RxJavaPlugins.onAssembly(new ParallelFlatMapStream<>(this, mapper, prefetch)); @@ -1688,7 +1688,7 @@ public final ParallelFlowable mapOptional(@NonNull Function Flowable collect(@NonNull Collector collector) { + public final Flowable collect(@NonNull Collector collector) { Objects.requireNonNull(collector, "collector is null"); return RxJavaPlugins.onAssembly(new ParallelCollector<>(this, collector)); } diff --git a/src/main/java/io/reactivex/rxjava3/parallel/ParallelTransformer.java b/src/main/java/io/reactivex/rxjava3/parallel/ParallelTransformer.java index 7e6a7734d0..a10a73ead4 100644 --- a/src/main/java/io/reactivex/rxjava3/parallel/ParallelTransformer.java +++ b/src/main/java/io/reactivex/rxjava3/parallel/ParallelTransformer.java @@ -23,7 +23,7 @@ * @since 2.2 */ @FunctionalInterface -public interface ParallelTransformer { +public interface ParallelTransformer<@NonNull Upstream, @NonNull Downstream> { /** * Applies a function to the upstream ParallelFlowable and returns a ParallelFlowable with * optionally different element type. diff --git a/src/main/java/io/reactivex/rxjava3/plugins/RxJavaPlugins.java b/src/main/java/io/reactivex/rxjava3/plugins/RxJavaPlugins.java index 9012e36f12..408eae8d36 100644 --- a/src/main/java/io/reactivex/rxjava3/plugins/RxJavaPlugins.java +++ b/src/main/java/io/reactivex/rxjava3/plugins/RxJavaPlugins.java @@ -918,7 +918,7 @@ public static void setOnSingleSubscribe(@Nullable BiFunction Subscriber onSubscribe(@NonNull Flowable source, @NonNull Subscriber subscriber) { + public static Subscriber<@NonNull ? super T> onSubscribe(@NonNull Flowable source, @NonNull Subscriber<@NonNull ? super T> subscriber) { BiFunction f = onFlowableSubscribe; if (f != null) { return apply(f, source, subscriber); diff --git a/src/main/java/io/reactivex/rxjava3/processors/AsyncProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/AsyncProcessor.java index 3461c146d6..8037c67ffe 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/AsyncProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/AsyncProcessor.java @@ -150,7 +150,7 @@ public static AsyncProcessor create() { } @Override - public void onSubscribe(Subscription s) { + public void onSubscribe(@NonNull Subscription s) { if (subscribers.get() == TERMINATED) { s.cancel(); return; @@ -160,7 +160,7 @@ public void onSubscribe(Subscription s) { } @Override - public void onNext(T t) { + public void onNext(@NonNull T t) { ExceptionHelper.nullCheck(t, "onNext called with a null value."); if (subscribers.get() == TERMINATED) { return; @@ -170,7 +170,7 @@ public void onNext(T t) { @SuppressWarnings("unchecked") @Override - public void onError(Throwable t) { + public void onError(@NonNull Throwable t) { ExceptionHelper.nullCheck(t, "onError called with a null Throwable."); if (subscribers.get() == TERMINATED) { RxJavaPlugins.onError(t); @@ -228,7 +228,7 @@ public Throwable getThrowable() { } @Override - protected void subscribeActual(Subscriber s) { + protected void subscribeActual(@NonNull Subscriber<@NonNull ? super T> s) { AsyncSubscription as = new AsyncSubscription<>(s, this); s.onSubscribe(as); if (add(as)) { @@ -341,7 +341,7 @@ static final class AsyncSubscription extends DeferredScalarSubscription { final AsyncProcessor parent; - AsyncSubscription(Subscriber actual, AsyncProcessor parent) { + AsyncSubscription(Subscriber<@NonNull ? super T> actual, AsyncProcessor parent) { super(actual); this.parent = parent; } diff --git a/src/main/java/io/reactivex/rxjava3/processors/BehaviorProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/BehaviorProcessor.java index 0b7e49ae2f..de5d744f3f 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/BehaviorProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/BehaviorProcessor.java @@ -239,7 +239,7 @@ public static BehaviorProcessor create() { } @Override - protected void subscribeActual(@NonNull Subscriber s) { + protected void subscribeActual(@NonNull Subscriber<@NonNull ? super T> s) { BehaviorSubscription bs = new BehaviorSubscription<>(s, this); s.onSubscribe(bs); if (add(bs)) { @@ -475,11 +475,11 @@ void setCurrent(Object o) { wl.unlock(); } - static final class BehaviorSubscription extends AtomicLong implements Subscription, NonThrowingPredicate { + static final class BehaviorSubscription<@NonNull T> extends AtomicLong implements Subscription, NonThrowingPredicate { private static final long serialVersionUID = 3293175281126227086L; - final Subscriber downstream; + final Subscriber<@NonNull ? super T> downstream; final BehaviorProcessor state; boolean next; @@ -492,7 +492,7 @@ static final class BehaviorSubscription extends AtomicLong implements Subscri long index; - BehaviorSubscription(Subscriber actual, BehaviorProcessor state) { + BehaviorSubscription(Subscriber<@NonNull ? super T> actual, BehaviorProcessor state) { this.downstream = actual; this.state = state; } diff --git a/src/main/java/io/reactivex/rxjava3/processors/FlowableProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/FlowableProcessor.java index 80db65e652..86622298f6 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/FlowableProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/FlowableProcessor.java @@ -26,7 +26,7 @@ * * @param the item value type */ -public abstract class FlowableProcessor extends Flowable implements Processor, FlowableSubscriber { +public abstract class FlowableProcessor<@NonNull T> extends Flowable implements Processor, FlowableSubscriber { /** * Returns true if the FlowableProcessor has subscribers. diff --git a/src/main/java/io/reactivex/rxjava3/processors/MulticastProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/MulticastProcessor.java index 7a6809b5d2..7ef61d7959 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/MulticastProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/MulticastProcessor.java @@ -375,7 +375,7 @@ public Throwable getThrowable() { } @Override - protected void subscribeActual(@NonNull Subscriber s) { + protected void subscribeActual(@NonNull Subscriber<@NonNull ? super T> s) { MulticastSubscription ms = new MulticastSubscription<>(s, this); s.onSubscribe(ms); if (add(ms)) { @@ -593,13 +593,13 @@ static final class MulticastSubscription extends AtomicLong implements Subscr private static final long serialVersionUID = -363282618957264509L; - final Subscriber downstream; + final Subscriber<@NonNull ? super T> downstream; final MulticastProcessor parent; long emitted; - MulticastSubscription(Subscriber actual, MulticastProcessor parent) { + MulticastSubscription(Subscriber<@NonNull ? super T> actual, MulticastProcessor parent) { this.downstream = actual; this.parent = parent; } diff --git a/src/main/java/io/reactivex/rxjava3/processors/PublishProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/PublishProcessor.java index 0a73cf1bf8..b507a2225b 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/PublishProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/PublishProcessor.java @@ -141,7 +141,7 @@ public static PublishProcessor create() { } @Override - protected void subscribeActual(@NonNull Subscriber t) { + protected void subscribeActual(@NonNull Subscriber<@NonNull ? super T> t) { PublishSubscription ps = new PublishSubscription<>(t, this); t.onSubscribe(ps); if (add(ps)) { @@ -336,11 +336,11 @@ public boolean hasComplete() { * * @param the value type */ - static final class PublishSubscription extends AtomicLong implements Subscription { + static final class PublishSubscription<@NonNull T> extends AtomicLong implements Subscription { private static final long serialVersionUID = 3562861878281475070L; /** The actual subscriber. */ - final Subscriber downstream; + final Subscriber<@NonNull ? super T> downstream; /** The parent processor servicing this subscriber. */ final PublishProcessor parent; @@ -349,7 +349,7 @@ static final class PublishSubscription extends AtomicLong implements Subscrip * @param actual the actual subscriber * @param parent the parent PublishProcessor */ - PublishSubscription(Subscriber actual, PublishProcessor parent) { + PublishSubscription(Subscriber<@NonNull ? super T> actual, PublishProcessor parent) { this.downstream = actual; this.parent = parent; } diff --git a/src/main/java/io/reactivex/rxjava3/processors/ReplayProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/ReplayProcessor.java index 6e903e5aab..aa3402ec13 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/ReplayProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/ReplayProcessor.java @@ -345,7 +345,7 @@ public static ReplayProcessor createWithTimeAndSize(long maxAge, @NonNull } @Override - protected void subscribeActual(Subscriber s) { + protected void subscribeActual(Subscriber<@NonNull ? super T> s) { ReplaySubscription rs = new ReplaySubscription<>(s, this); s.onSubscribe(rs); @@ -615,7 +615,7 @@ interface ReplayBuffer { static final class ReplaySubscription extends AtomicInteger implements Subscription { private static final long serialVersionUID = 466549804534799122L; - final Subscriber downstream; + final Subscriber<@NonNull ? super T> downstream; final ReplayProcessor state; Object index; @@ -626,7 +626,7 @@ static final class ReplaySubscription extends AtomicInteger implements Subscr long emitted; - ReplaySubscription(Subscriber actual, ReplayProcessor state) { + ReplaySubscription(Subscriber<@NonNull ? super T> actual, ReplayProcessor state) { this.downstream = actual; this.state = state; this.requested = new AtomicLong(); @@ -728,7 +728,7 @@ public void replay(ReplaySubscription rs) { int missed = 1; final List b = buffer; - final Subscriber a = rs.downstream; + final Subscriber<@NonNull ? super T> a = rs.downstream; Integer indexObject = (Integer)rs.index; int index; @@ -967,7 +967,7 @@ public void replay(ReplaySubscription rs) { } int missed = 1; - final Subscriber a = rs.downstream; + final Subscriber<@NonNull ? super T> a = rs.downstream; Node index = (Node)rs.index; if (index == null) { @@ -1257,7 +1257,7 @@ public void replay(ReplaySubscription rs) { } int missed = 1; - final Subscriber a = rs.downstream; + final Subscriber<@NonNull ? super T> a = rs.downstream; TimedNode index = (TimedNode)rs.index; if (index == null) { diff --git a/src/main/java/io/reactivex/rxjava3/processors/UnicastProcessor.java b/src/main/java/io/reactivex/rxjava3/processors/UnicastProcessor.java index a1af942d8d..7d7e20a075 100644 --- a/src/main/java/io/reactivex/rxjava3/processors/UnicastProcessor.java +++ b/src/main/java/io/reactivex/rxjava3/processors/UnicastProcessor.java @@ -159,7 +159,7 @@ public final class UnicastProcessor extends FlowableProcessor { Throwable error; - final AtomicReference> downstream; + final AtomicReference> downstream; volatile boolean cancelled; @@ -282,7 +282,7 @@ void doTerminate() { } } - void drainRegular(Subscriber a) { + void drainRegular(Subscriber<@NonNull ? super T> a) { int missed = 1; final SpscLinkedArrayQueue q = queue; @@ -326,7 +326,7 @@ void drainRegular(Subscriber a) { } } - void drainFused(Subscriber a) { + void drainFused(Subscriber<@NonNull ? super T> a) { int missed = 1; final SpscLinkedArrayQueue q = queue; @@ -374,7 +374,7 @@ void drain() { int missed = 1; - Subscriber a = downstream.get(); + Subscriber<@NonNull ? super T> a = downstream.get(); for (;;) { if (a != null) { @@ -394,7 +394,7 @@ void drain() { } } - boolean checkTerminated(boolean failFast, boolean d, boolean empty, Subscriber a, SpscLinkedArrayQueue q) { + boolean checkTerminated(boolean failFast, boolean d, boolean empty, Subscriber<@NonNull ? super T> a, SpscLinkedArrayQueue q) { if (cancelled) { q.clear(); downstream.lazySet(null); @@ -475,7 +475,7 @@ public void onComplete() { } @Override - protected void subscribeActual(Subscriber s) { + protected void subscribeActual(Subscriber<@NonNull ? super T> s) { if (!once.get() && once.compareAndSet(false, true)) { s.onSubscribe(wip); diff --git a/src/test/java/io/reactivex/rxjava3/validators/SourceAnnotationCheck.java b/src/test/java/io/reactivex/rxjava3/validators/SourceAnnotationCheck.java index 6fb50a141b..ed1080023f 100644 --- a/src/test/java/io/reactivex/rxjava3/validators/SourceAnnotationCheck.java +++ b/src/test/java/io/reactivex/rxjava3/validators/SourceAnnotationCheck.java @@ -25,6 +25,7 @@ import io.reactivex.rxjava3.flowables.ConnectableFlowable; import io.reactivex.rxjava3.observables.ConnectableObservable; import io.reactivex.rxjava3.parallel.ParallelFlowable; +import io.reactivex.rxjava3.plugins.RxJavaPlugins; import io.reactivex.rxjava3.processors.*; import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.*; @@ -172,6 +173,11 @@ public void checkMulticastProcessor() throws Exception { processFile(MulticastProcessor.class); } + @Test + public void checkRxJavaPlugins() throws Exception { + processFile(RxJavaPlugins.class); + } + static void processFile(Class clazz) throws Exception { String baseClassName = clazz.getSimpleName(); File f = TestHelper.findSource(baseClassName, clazz.getPackage().getName()); @@ -376,6 +382,26 @@ else if (skippingDepth == 0) { ; } } + + for (String typeName : TYPES_REQUIRING_NONNULL_TYPEARG) { + String pattern = typeName + " TYPES_REQUIRING_NONNULL_TYPEARG = Arrays.asList( + "Iterable", "Stream", "Publisher", "Subscriber", "Processor" + ); }