diff --git a/src/main/java/rx/Observable.java b/src/main/java/rx/Observable.java index 04551d98af..59cdd4f3f9 100644 --- a/src/main/java/rx/Observable.java +++ b/src/main/java/rx/Observable.java @@ -5089,9 +5089,32 @@ public final Observable filter(Func1 predicate) { * {@link Action0} * @see ReactiveX operators documentation: Do * @see #doOnTerminate(Action0) + * @deprecated use {@link #doAfterTerminate(Action0)} instead. */ + @Deprecated public final Observable finallyDo(Action0 action) { - return lift(new OperatorFinally(action)); + return lift(new OperatorDoAfterTerminate(action)); + } + + /** + * Registers an {@link Action0} to be called when this Observable invokes either + * {@link Observer#onCompleted onCompleted} or {@link Observer#onError onError}. + *

+ * + *

+ *
Scheduler:
+ *
{@code doAfterTerminate} does not operate by default on a particular {@link Scheduler}.
+ *
+ * + * @param action + * an {@link Action0} to be invoked when the source Observable finishes + * @return an Observable that emits the same items as the source Observable, then invokes the + * {@link Action0} + * @see ReactiveX operators documentation: Do + * @see #doOnTerminate(Action0) + */ + public final Observable doAfterTerminate(Action0 action) { + return lift(new OperatorDoAfterTerminate(action)); } /** diff --git a/src/main/java/rx/internal/operators/OperatorFinally.java b/src/main/java/rx/internal/operators/OperatorDoAfterTerminate.java similarity index 93% rename from src/main/java/rx/internal/operators/OperatorFinally.java rename to src/main/java/rx/internal/operators/OperatorDoAfterTerminate.java index 5f870f8f37..a56d28795c 100644 --- a/src/main/java/rx/internal/operators/OperatorFinally.java +++ b/src/main/java/rx/internal/operators/OperatorDoAfterTerminate.java @@ -29,10 +29,10 @@ * * @param the value type */ -public final class OperatorFinally implements Operator { +public final class OperatorDoAfterTerminate implements Operator { final Action0 action; - public OperatorFinally(Action0 action) { + public OperatorDoAfterTerminate(Action0 action) { if (action == null) { throw new NullPointerException("Action can not be null"); } diff --git a/src/test/java/rx/internal/operators/OperatorFinallyTest.java b/src/test/java/rx/internal/operators/OperatorDoAfterTerminateTest.java similarity index 86% rename from src/test/java/rx/internal/operators/OperatorFinallyTest.java rename to src/test/java/rx/internal/operators/OperatorDoAfterTerminateTest.java index e89ee74468..6295386ae1 100644 --- a/src/test/java/rx/internal/operators/OperatorFinallyTest.java +++ b/src/test/java/rx/internal/operators/OperatorDoAfterTerminateTest.java @@ -28,7 +28,7 @@ import rx.Observer; import rx.functions.Action0; -public class OperatorFinallyTest { +public class OperatorDoAfterTerminateTest { private Action0 aAction0; private Observer observer; @@ -42,24 +42,24 @@ public void before() { } private void checkActionCalled(Observable input) { - input.finallyDo(aAction0).subscribe(observer); + input.doAfterTerminate(aAction0).subscribe(observer); verify(aAction0, times(1)).call(); } @Test - public void testFinallyCalledOnComplete() { + public void testDoAfterTerminateCalledOnComplete() { checkActionCalled(Observable.from(new String[] { "1", "2", "3" })); } @Test - public void testFinallyCalledOnError() { + public void testDoAfterTerminateCalledOnError() { checkActionCalled(Observable. error(new RuntimeException("expected"))); } @Test public void nullActionShouldBeCheckedInConstructor() { try { - new OperatorFinally(null); + new OperatorDoAfterTerminate(null); fail(); } catch (NullPointerException expected) { assertEquals("Action can not be null", expected.getMessage()); diff --git a/src/test/java/rx/internal/operators/OperatorObserveOnTest.java b/src/test/java/rx/internal/operators/OperatorObserveOnTest.java index e505bf0672..65a4085384 100644 --- a/src/test/java/rx/internal/operators/OperatorObserveOnTest.java +++ b/src/test/java/rx/internal/operators/OperatorObserveOnTest.java @@ -138,7 +138,7 @@ public void call(String t1) { assertTrue(correctThreadName); } - }).finallyDo(new Action0() { + }).doAfterTerminate(new Action0() { @Override public void call() {