Skip to content

Commit

Permalink
2.x: Check runnable == null in *Scheduler.schedule*().
Browse files Browse the repository at this point in the history
  • Loading branch information
artem-zinnatullin committed Nov 30, 2017
1 parent 860e39e commit 9affb70
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,17 @@ public Worker createWorker() {
@NonNull
@Override
public Disposable scheduleDirect(@NonNull Runnable run) {
// TODO remove if https://github.com/ReactiveX/RxJava/pull/5747 gets merged.
ObjectHelper.requireNonNull(run, "runnable is null");
run.run();
return EmptyDisposable.INSTANCE;
}

@NonNull
@Override
public Disposable scheduleDirect(@NonNull Runnable run, long delay, TimeUnit unit) {
// TODO remove if https://github.com/ReactiveX/RxJava/pull/5747 gets merged.
ObjectHelper.requireNonNull(run, "runnable is null");
try {
unit.sleep(delay);
run.run();
Expand Down
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, "runnable 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
30 changes: 30 additions & 0 deletions src/test/java/io/reactivex/schedulers/AbstractSchedulerTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -626,4 +626,34 @@ public void run() {
}
}
}

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

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

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

0 comments on commit 9affb70

Please sign in to comment.