Skip to content

Commit

Permalink
2.x: Check runnable == null in *Scheduler.schedule*(). (#5748)
Browse files Browse the repository at this point in the history
* 2.x: Check runnable == null in *Scheduler.schedule*().

* "run is null".

* sudo "run is null".
  • Loading branch information
artem-zinnatullin authored and akarnokd committed Dec 7, 2017
1 parent 0bab46d commit 564c3dc
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/main/java/io/reactivex/plugins/RxJavaPlugins.java
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,8 @@ public static Scheduler onNewThreadScheduler(@NonNull Scheduler defaultScheduler
*/
@NonNull
public static Runnable onSchedule(@NonNull Runnable run) {
ObjectHelper.requireNonNull(run, "run is null");

Function<? super Runnable, ? extends Runnable> f = onScheduleHandler;
if (f == null) {
return run;
Expand Down
5 changes: 0 additions & 5 deletions src/test/java/io/reactivex/plugins/RxJavaPluginsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1369,8 +1369,6 @@ public void subscribeActual(CompletableObserver t) {

assertNull(RxJavaPlugins.onAssembly((Maybe)null));

assertNull(RxJavaPlugins.onSchedule(null));

Maybe myb = new Maybe() {
@Override
public void subscribeActual(MaybeObserver t) {
Expand All @@ -1381,10 +1379,7 @@ public void subscribeActual(MaybeObserver t) {
assertSame(myb, RxJavaPlugins.onAssembly(myb));


assertNull(RxJavaPlugins.onSchedule(null));

Runnable action = Functions.EMPTY_RUNNABLE;

assertSame(action, RxJavaPlugins.onSchedule(action));

class AllSubscriber implements Subscriber, Observer, SingleObserver, CompletableObserver, MaybeObserver {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -742,4 +742,34 @@ public void run() {
assertSame(countDownRunnable, wrapper.getWrappedRunnable());
disposable.dispose();
}
}

@Test
public void scheduleDirectNullRunnable() {
try {
getScheduler().scheduleDirect(null);
fail();
} catch (NullPointerException npe) {
assertEquals("run is null", npe.getMessage());
}
}

@Test
public void scheduleDirectWithDelayNullRunnable() {
try {
getScheduler().scheduleDirect(null, 10, TimeUnit.MILLISECONDS);
fail();
} catch (NullPointerException npe) {
assertEquals("run is null", npe.getMessage());
}
}

@Test
public void schedulePeriodicallyDirectNullRunnable() {
try {
getScheduler().schedulePeriodicallyDirect(null, 5, 10, TimeUnit.MILLISECONDS);
fail();
} catch (NullPointerException npe) {
assertEquals("run is null", npe.getMessage());
}
}
}

0 comments on commit 564c3dc

Please sign in to comment.