本文整理了Java中io.reactivex.Single.onErrorReturn()
方法的一些代码示例,展示了Single.onErrorReturn()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Single.onErrorReturn()
方法的具体详情如下:
包路径:io.reactivex.Single
类名称:Single
方法名:onErrorReturn
[英]Instructs a Single to emit an item (returned by a specified function) rather than invoking SingleObserver#onError if it encounters an error.
By default, when a Single encounters an error that prevents it from emitting the expected item to its subscriber, the Single invokes its subscriber's SingleObserver#onError method, and then quits without invoking any more of its subscriber's methods. The onErrorReturn method changes this behavior. If you pass a function ( resumeFunction) to a Single's onErrorReturn method, if the original Single encounters an error, instead of invoking its subscriber's SingleObserver#onError method, it will instead emit the return value of resumeFunction.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered. Scheduler: onErrorReturn does not operate by default on a particular Scheduler.
[中]指示单个函数发出一个项(由指定函数返回),而不是在遇到错误时调用SingleObserver#onError。
默认情况下,当单个用户遇到阻止其向订阅者发送预期项目的错误时,该用户将调用订阅者的SingleObserver#OneError方法,然后退出,不再调用订阅者的任何方法。OneRorReturn方法会更改此行为。如果将函数(resumeFunction)传递给Single的onErrorReturn方法,如果原始Single遇到错误,它将不会调用订阅者的SingleObserver#onError方法,而是发出resumeFunction的返回值。
您可以使用它来防止错误传播,或者在遇到错误时提供回退数据。Scheduler:onErrorReturn默认情况下不会在特定的计划程序上运行。
代码示例来源:origin: ReactiveX/RxJava
@Test(expected = NullPointerException.class)
public void onErrorReturnSupplierNull() {
just1.onErrorReturn((Function<Throwable, Integer>)null);
}
代码示例来源:origin: ReactiveX/RxJava
@Test(expected = NullPointerException.class)
public void onErrorReturnsSupplierReturnsNull() {
error.onErrorReturn(new Function<Throwable, Integer>() {
@Override
public Integer apply(Throwable t) throws Exception {
return null;
}
}).blockingGet();
}
代码示例来源:origin: TeamNewPipe/NewPipe
private Single<ManagedMediaSource> getLoadedMediaSource(@NonNull final PlayQueueItem stream) {
return stream.getStream().map(streamInfo -> {
final MediaSource source = playbackListener.sourceOf(stream, streamInfo);
if (source == null) {
final String message = "Unable to resolve source from stream info." +
" URL: " + stream.getUrl() +
", audio count: " + streamInfo.getAudioStreams().size() +
", video count: " + streamInfo.getVideoOnlyStreams().size() +
streamInfo.getVideoStreams().size();
return new FailedMediaSource(stream, new MediaSourceResolutionException(message));
}
final long expiration = System.currentTimeMillis() +
ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId());
return new LoadedMediaSource(source, stream, expiration);
}).onErrorReturn(throwable -> new FailedMediaSource(stream,
new StreamInfoLoadException(throwable)));
}
代码示例来源:origin: ReactiveX/RxJava
@Test
public void resumeThrows() {
TestObserver<Integer> to = Single.<Integer>error(new TestException("Outer"))
.onErrorReturn(new Function<Throwable, Integer>() {
@Override
public Integer apply(Throwable e) throws Exception {
throw new TestException("Inner");
}
})
.test()
.assertFailure(CompositeException.class);
List<Throwable> errors = TestHelper.compositeList(to.errors().get(0));
TestHelper.assertError(errors, 0, TestException.class, "Outer");
TestHelper.assertError(errors, 1, TestException.class, "Inner");
}
代码示例来源:origin: net.redpipe/redpipe-engine
@POST
@Path("/loginAuth")
public Single<Response> loginAuth(@FormParam("username") String username, @FormParam("password") String password,
@FormParam("return_url") String returnUrl, @Context Session session, @Context RoutingContext ctx,
@Context AuthProvider auth) throws URISyntaxException {
if (username == null || username.isEmpty() || password == null || password.isEmpty())
return Single.just(Response.status(Status.BAD_REQUEST).build());
JsonObject authInfo = new JsonObject().put("username", username).put("password", password);
return auth.rxAuthenticate(authInfo).map(user -> {
ctx.setUser(user);
if (session != null) {
// the user has upgraded from unauthenticated to authenticated
// session should be upgraded as recommended by owasp
session.regenerateId();
}
String redirectUrl = session.remove(REDIRECT_KEY);
if (redirectUrl == null)
redirectUrl = returnUrl;
if (redirectUrl == null)
redirectUrl = "/";
try {
return Response.status(Status.FOUND).location(new URI(redirectUrl)).build();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}).onErrorReturn(t -> {
return Response.status(Status.FORBIDDEN).entity(t.getMessage()).type(MediaType.TEXT_PLAIN).build();
});
}
代码示例来源:origin: FroMage/redpipe
@POST
@Path("/loginAuth")
public Single<Response> loginAuth(@FormParam("username") String username, @FormParam("password") String password,
@FormParam("return_url") String returnUrl, @Context Session session, @Context RoutingContext ctx,
@Context AuthProvider auth) throws URISyntaxException {
if (username == null || username.isEmpty() || password == null || password.isEmpty())
return Single.just(Response.status(Status.BAD_REQUEST).build());
JsonObject authInfo = new JsonObject().put("username", username).put("password", password);
return auth.rxAuthenticate(authInfo).map(user -> {
ctx.setUser(user);
if (session != null) {
// the user has upgraded from unauthenticated to authenticated
// session should be upgraded as recommended by owasp
session.regenerateId();
}
String redirectUrl = session.remove(REDIRECT_KEY);
if (redirectUrl == null)
redirectUrl = returnUrl;
if (redirectUrl == null)
redirectUrl = "/";
try {
return Response.status(Status.FOUND).location(new URI(redirectUrl)).build();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}).onErrorReturn(t -> {
return Response.status(Status.FORBIDDEN).entity(t.getMessage()).type(MediaType.TEXT_PLAIN).build();
});
}
代码示例来源:origin: FroMage/redpipe
public Single<Response> render(Request request) {
return selectVariant(request)
.flatMap(template -> {
TemplateRenderer renderer = AppGlobals.get().getTemplateRenderer(template);
if(renderer == null)
throw new RuntimeException("Failed to find template renderer for template "+template);
return renderer.render(template, variables);
}).onErrorReturn(t -> {
if(t instanceof WebApplicationException)
return ((WebApplicationException) t).getResponse();
return RedpipeUtil.rethrow(t);
});
}
代码示例来源:origin: net.redpipe/redpipe-engine
public Single<Response> render(Request request) {
return selectVariant(request)
.flatMap(template -> {
TemplateRenderer renderer = AppGlobals.get().getTemplateRenderer(template);
if(renderer == null)
throw new RuntimeException("Failed to find template renderer for template "+template);
return renderer.render(template, variables);
}).onErrorReturn(t -> {
if(t instanceof WebApplicationException)
return ((WebApplicationException) t).getResponse();
return RedpipeUtil.rethrow(t);
});
}
代码示例来源:origin: d4rken/RxShell
/**
* Convenience method for {@link #submit(RxCmdShell)} using {@link Single#blockingGet()}
* <br>If a shell can't be opened {@link ExitCode#EXCEPTION} will be returned and an error message.
*/
public Result execute(RxCmdShell shell) {
return submit(shell)
.onErrorReturn(err -> {
final Cmd cmd = Builder.this.build();
List<String> oBuffer = cmd.useOutputBuffer ? new ArrayList<>() : null;
List<String> eBuffer = cmd.useErrorBuffer ? Collections.singletonList(err.toString()) : null;
if (cmd.outputProcessor != null) {
cmd.outputProcessor.onComplete();
}
if (cmd.errorProcessor != null) {
cmd.errorProcessor.onNext(err.toString());
cmd.errorProcessor.onComplete();
}
return new Result(cmd, ExitCode.EXCEPTION, oBuffer, eBuffer);
})
.blockingGet();
}
}
代码示例来源:origin: io.knotx/knotx-databridge-core
@Override
protected Single<KnotContext> processRequest(KnotContext knotContext) {
return Optional.ofNullable(knotContext.getFragments())
.map(fragments ->
Observable.fromIterable(fragments)
.filter(this::shouldProcess)
.doOnNext(this::traceFragment)
.map(FragmentContext::from)
.flatMapSingle(
fragmentContext -> snippetProcessor.processSnippet(fragmentContext, knotContext))
.toList()
).orElse(Single.just(Collections.emptyList()))
.map(result -> createSuccessResponse(knotContext))
.onErrorReturn(error -> processError(knotContext, error));
}
代码示例来源:origin: Cognifide/knotx
@Override
protected Single<KnotContext> processRequest(KnotContext knotContext) {
return Optional.ofNullable(knotContext.getFragments())
.map(fragments ->
Observable.fromIterable(fragments)
.filter(this::shouldProcess)
.doOnNext(this::traceFragment)
.map(FragmentContext::from)
.flatMapSingle(
fragmentContext -> snippetProcessor.processSnippet(fragmentContext, knotContext))
.toList()
).orElse(Single.just(Collections.emptyList()))
.map(result -> createSuccessResponse(knotContext))
.onErrorReturn(error -> processError(knotContext, error));
}
代码示例来源:origin: VictorAlbertos/ReactiveCache
Single<Boolean> isLogged() {
return cacheProvider.read()
.map(user -> true)
.onErrorReturn(observer -> false);
}
代码示例来源:origin: Cognifide/knotx
public Single<FragmentContext> processSnippet(final FragmentContext fragmentContext,
KnotContext request) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Processing Handlebars snippet {}", fragmentContext.fragment());
}
return Observable.just(fragmentContext)
.flatMap(FragmentContext::services)
.map(serviceEngine::mergeWithConfiguration)
.doOnNext(this::traceService)
.flatMap(serviceEntry ->
fetchServiceData(serviceEntry, request).toObservable()
.map(serviceEntry::getResultWithNamespaceAsKey))
.reduce(new JsonObject(), JsonObject::mergeIn)
.map(results -> applyData(fragmentContext, results))
.onErrorReturn(t -> handleError(fragmentContext, request, t));
}
代码示例来源:origin: io.knotx/knotx-databridge-core
public Single<FragmentContext> processSnippet(final FragmentContext fragmentContext,
KnotContext request) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Processing Handlebars snippet {}", fragmentContext.fragment());
}
return Observable.just(fragmentContext)
.flatMap(FragmentContext::services)
.map(serviceEngine::mergeWithConfiguration)
.doOnNext(this::traceService)
.flatMap(serviceEntry ->
fetchServiceData(serviceEntry, request).toObservable()
.map(serviceEntry::getResultWithNamespaceAsKey)
.doOnError(e -> storeErrorInFragment(fragmentContext.fragment(), e, serviceEntry.getName()))
)
.reduce(new JsonObject(), JsonObject::mergeIn)
.map(results -> applyData(fragmentContext, results))
.onErrorReturn(e -> handleError(fragmentContext, request, e));
}
代码示例来源:origin: com.github.rahulsom/grooves-api
.toList()
.map(Flowable::just)
.onErrorReturn(throwable -> executor
.applyReverts(
fallbackSnapshotAndEvents.get()
代码示例来源:origin: uk.os.vt/vt-mbtiles
private static Single<Metadata> generateDefault(Database dataSource) {
return queryMetadata(dataSource).map(new Function<HashMap<String, String>, Metadata>() {
@Override
public Metadata apply(HashMap<String, String> metadata) throws Exception {
final JSONObject tileJson = new JSONObject();
if (metadata.containsKey("json")) {
try {
final JSONObject json = new JSONObject(metadata.get("json"));
tileJson.put("vector_layers", json.getJSONArray("vector_layers"));
} catch (final JSONException ex) {
LOG.error("problem generating JSON for metadata", ex);
}
}
try {
addMetadataToTileJson(metadata, tileJson);
} catch (final JSONException ex) {
LOG.error("problem generating metadata", ex);
}
final Metadata.Builder builder = new Metadata.Builder();
builder.setTileJson(tileJson);
return builder.build();
}
}).onErrorReturn(new Function<Throwable, Metadata>() {
@Override
public Metadata apply(Throwable throwable) throws Exception {
// TODO REMOVE THIS SHOCKING HACK!
return new Metadata.Builder().build();
}
});
}
代码示例来源:origin: info.xiancloud/xian-daocore
.flatMap(sqlExecutionResult -> Single.just(UnitResponse.createSuccess(sqlExecutionResult)))
.doOnSuccess(unitResponse -> after(before))
.onErrorReturn(error -> {
LOG.error(error);
return getSqlDriver().handleException(error, this);
代码示例来源:origin: xiancloud/xian
.flatMap(sqlExecutionResult -> Single.just(UnitResponse.createSuccess(sqlExecutionResult)))
.doOnSuccess(unitResponse -> after(before))
.onErrorReturn(error -> {
LOG.error(error);
return getSqlDriver().handleException(error, this);
代码示例来源:origin: Cognifide/knotx
@Override
public Single<KnotContext> processRequest(final KnotContext knotContext) {
return Single.just(knotContext)
.map(context -> FormsFactory.create(context, options))
.flatMap(forms -> {
if (knotContext.getClientRequest().getMethod() == HttpMethod.GET) {
return Single.just(handleGetMethod(forms, knotContext));
} else {
FormEntity current = currentForm(forms, knotContext);
return callActionAdapter(knotContext, current)
.map(response -> processAdapterResponse(knotContext, forms, current, response));
}
})
.onErrorReturn(error -> processError(knotContext, error));
}
内容来源于网络,如有侵权,请联系作者删除!