Created by
Kenneth Jorgensen
| import io.reactivex.Completable;
import io.reactivex.Maybe;
import io.reactivex.Single;
import io.reactivex.disposables.Disposable;
import java.util.concurrent.CompletableFuture;
public class RxUtil {
public static <T> Single<T> toSingle(CompletableFuture<T> future) {
return Single.create(subscriber -> {
future.thenAccept(result -> {
subscriber.onSuccess(result);
})
.exceptionally(e -> {
subscriber.onError(e);
return null;
});
});
}
public static <T> Maybe<T> toMaybe(CompletableFuture<T> future) {
return toSingle(future).toMaybe();
}
public static Completable toCompletable(CompletableFuture<?> future) {
return Completable.create(subscriber -> {
future.thenAccept(ignore -> {
subscriber.onComplete();
})
.exceptionally(e -> {
subscriber.onError(e);
return null;
});
});
}
public static CompletableFuture<Void> toCompletableFuture(Completable completable) {
CompletableFuture<Void> future = new CompletableFuture<>();
final Disposable disposable = completable.subscribe(
() -> future.complete(null),
future::completeExceptionally
);
return future
.thenAccept(ignore -> disposable.dispose());
}
}
|
RxJava 3 has stuff for this now.