@Override public void send(String title, String body, final Callback callback) { body = String.format("%s\nDevice: %s %s, SDK: %s, app version: %s", body, Build.MANUFACTURER, Build.MODEL, Build.VERSION.SDK_INT, BuildConfig.VERSION_CODE); mFeedbackService.createGithubIssue(new Issue(title, body)) .map(response -> true) .onErrorReturn(throwable -> false) .observeOn(mMainThreadScheduler) .subscribe(callback::onSent); }
public static void init(Context context, Scheduler scheduler) { Observable.fromCallable(() -> loadFromAssets(context)) .onErrorReturn(throwable -> null) .subscribeOn(scheduler) .subscribe(); }
@NonNull private Observable<String> fromNetwork(String itemId, String url) { return mMercuryService.parse(url) .onErrorReturn(throwable -> null) .map(readable -> readable == null ? null : readable.content) .doOnNext(content -> mCache.putReadability(itemId, content)); }
}).onErrorReturn(throwable -> { return "fallback value"; }).subscribe(System.out::println);
@Override public <R> Observable<Result<R>> adapt(Call<R> call) { return Observable.create(new CallOnSubscribe<>(call)) // .map(new Func1<Response<R>, Result<R>>() { @Override public Result<R> call(Response<R> response) { return Result.response(response); } }) .onErrorReturn(new Func1<Throwable, Result<R>>() { @Override public Result<R> call(Throwable throwable) { return Result.error(throwable); } }); } }
private Observable<RawUser[]> getFollowersObservable(String login) { return Observable.create((Subscriber<? super RawUser[]> s) -> s.onNext(restClient.getFollowers(login))) .onErrorReturn(throwable -> { log.error("Failed to retrieve {} followers", login, throwable); return new RawUser[]{}; }) .subscribeOn(Schedulers.computation()); }
private Observable<Repository[]> getReposObservable(String login) { return Observable.create((Subscriber<? super Repository[]> s) -> s.onNext(restClient.getRepositories(login))) .onErrorReturn(throwable -> { log.error("Failed to retrieve {} repos", login, throwable); return new Repository[]{}; }) .subscribeOn(Schedulers.computation()); }
private Observable<RawUser> getRawUserObservable(String login) { return Observable.create((Subscriber<? super RawUser> s) -> s.onNext(restClient.getUser(login))) .onErrorReturn(throwable -> { log.error("Failed to retrieve user {}", login, throwable); return new RawUser("???", null, null); }) .subscribeOn(Schedulers.computation()); }
@Override public Observable<? extends Action<State>> actions() { final Observable<Action<State>> refresh = just(new RefreshAction()); //don't forget to convert errors in actions return refresh.concatWith(refreshColor()).onErrorReturn(ErrorAction::new); }
public Observable<Long> getTotalIndex(long millis) { // waits for change or x seconds return eventStream .timeout(millis, TimeUnit.MILLISECONDS) .onErrorReturn(err -> mapTimeoutToServiceChange(err, "")) .map(se -> getLastEmitted()); }
@Override public void connectTo(final Example_7a_Model model) { model.getLogs() .doOnError(throwable -> vm2v_log.onNext(new LogRow("!", "Unexpected error -> will retry here in ViewModel", "Error: " + throwable.getMessage()))) .retry(5) .onErrorReturn(throwable -> new LogRow("!!!", "Too many unexpected errors -> stop", "Error: " + throwable.getMessage())) .subscribe(vm2v_log); }
public static <T> Observable<T> executeObservable(String groupKey, String commandkey, Supplier<T> toRun, Function<Throwable, T> fallback) { return new GenericHystrixCommand<>(groupKey, commandkey, toRun, fallback) .toObservable() .onErrorReturn(t -> {throw wrappedException(t);}); }
public Observable<Boolean> sendGcmNotificationRequestingSupply(String title, String body) { return RxGcm.Notifications.currentToken() .map(token -> new Payload(token, title, body, TARGET_SUPPLY_GCM)) .concatMap(payload -> apiGcmServer.sendNotification(payload)) .map(gcmResponseServerResponse -> gcmResponseServerResponse.body().success()) .onErrorReturn(throwable -> false); }
public Observable<Boolean> sendGcmNotificationRequestingIssue(String title, String body) { return RxGcm.Notifications.currentToken() .map(token -> new Payload(token, title, body, TARGET_ISSUE_GCM)) .concatMap(payload -> apiGcmServer.sendNotification(payload)) .map(gcmResponseServerResponse -> gcmResponseServerResponse.body().success()) .onErrorReturn(throwable -> false); }
public Observable<Boolean> sendGcmNotificationRequestingNestedSupply(String title, String body) { return RxGcm.Notifications.currentToken() .map(token -> new Payload(token, title, body, TARGET_NESTED_SUPPLY_GCM)) .concatMap(payload -> apiGcmServer.sendNotification(payload)) .map(gcmResponseServerResponse -> gcmResponseServerResponse.body().success()) .onErrorReturn(throwable -> false); }
public Observable<Long> getIndexOfApp(String appName, long millis) { // waits for change of app A or x seconds return eventStream .filter(se -> se.getName().equals(appName)) .timeout(millis, TimeUnit.MILLISECONDS) .onErrorReturn(err -> mapTimeoutToServiceChange(err, appName)) .map(se -> getLastEmittedOfApp(se.getName())); }
@Test public void sample_291() throws Exception { Observable<String> obs = Observable .<String>error(new RuntimeException("Swallowed")) .doOnError(th -> log.warn("onError", th)) .onErrorReturn(th -> "Fallback"); }
default Observable<Integer> populationOf(String query) { return search(query) .concatMapIterable(SearchResult::getGeonames) .map(Geoname::getPopulation) .filter(p -> p != null) .singleOrDefault(0) .doOnError(th -> log.warn("Falling back to 0 for {}", query, th)) .onErrorReturn(th -> 0) .subscribeOn(Schedulers.io()); }
@Test public void sample_129() throws Exception { Observable<Person> person = Observable.just(new Person()); Observable<Income> income = person .flatMap(this::determineIncome) .onErrorReturn(error -> Income.no()); }
@Test public void sample_177() throws Exception { List<Ticket> tickets = Arrays.asList(new Ticket(), new Ticket(), new Ticket()); List<Ticket> failures = Observable.from(tickets) .flatMap(ticket -> rxSendEmail(ticket) .flatMap(response -> Observable.<Ticket>empty()) .doOnError(e -> log.warn("Failed to send {}", ticket, e)) .onErrorReturn(err -> ticket)) .toList() .toBlocking() .single(); }