@Test(expected = NullPointerException.class) public void onErrorResumeNextNull() { error.completable.onErrorResumeNext(null); }
@Test(timeout = 5000) public void onErrorResumeNextNormal() { Completable c = error.completable.onErrorResumeNext(new Function<Throwable, Completable>() { @Override public Completable apply(Throwable v) { return normal.completable; } }); c.blockingAwait(); }
@Test(timeout = 5000, expected = TestException.class) public void onErrorResumeNextError() { Completable c = error.completable.onErrorResumeNext(new Function<Throwable, Completable>() { @Override public Completable apply(Throwable v) { return error.completable; } }); c.blockingAwait(); }
@Override public CompletableSource apply(Completable c) throws Exception { return c.onErrorResumeNext(Functions.justFunction(Completable.complete())); } });
@Override public CompletableSource apply(Completable c) throws Exception { return Completable.error(new TestException()).onErrorResumeNext(Functions.justFunction(c)); } });
@Test(timeout = 5000) public void onErrorResumeNextFunctionThrows() { Completable c = error.completable.onErrorResumeNext(new Function<Throwable, Completable>() { @Override public Completable apply(Throwable e) { throw new TestException(); } }); try { c.blockingAwait(); Assert.fail("Did not throw an exception"); } catch (CompositeException ex) { List<Throwable> a = ex.getExceptions(); Assert.assertEquals(2, a.size()); Assert.assertTrue(a.get(0) instanceof TestException); Assert.assertTrue(a.get(1) instanceof TestException); } }
@NonNull private static Completable writeClientCharacteristicConfig( final BluetoothGattCharacteristic bluetoothGattCharacteristic, final DescriptorWriter descriptorWriter, final byte[] value ) { final BluetoothGattDescriptor descriptor = bluetoothGattCharacteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_UUID); if (descriptor == null) { return Completable.error(new BleCannotSetCharacteristicNotificationException( bluetoothGattCharacteristic, BleCannotSetCharacteristicNotificationException.CANNOT_FIND_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR, null )); } return descriptorWriter.writeDescriptor(descriptor, value) .onErrorResumeNext(new Function<Throwable, CompletableSource>() { @Override public CompletableSource apply(Throwable throwable) { return Completable.error(new BleCannotSetCharacteristicNotificationException( bluetoothGattCharacteristic, BleCannotSetCharacteristicNotificationException.CANNOT_WRITE_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR, throwable )); } }); } }
@Test(timeout = 5000) public void onErrorResumeNextFunctionReturnsNull() { Completable c = error.completable.onErrorResumeNext(new Function<Throwable, Completable>() { @Override public Completable apply(Throwable e) { return null; } }); try { c.blockingAwait(); Assert.fail("Did not throw an exception"); } catch (CompositeException ex) { List<Throwable> errors = ex.getExceptions(); TestHelper.assertError(errors, 0, TestException.class); TestHelper.assertError(errors, 1, NullPointerException.class); assertEquals(2, errors.size()); } }
@Test public void disposed() { TestHelper.checkDisposed( Completable.error(new TestException()) .onErrorResumeNext(Functions.justFunction(Completable.never())) ); } }
@Test public void normalResumeNext() { final int[] call = { 0 }; Completable.complete() .onErrorResumeNext(new Function<Throwable, CompletableSource>() { @Override public CompletableSource apply(Throwable e) throws Exception { call[0]++; return Completable.complete(); } }) .test() .assertResult(); assertEquals(0, call[0]); } }
@Test public void resumeWithError() { Completable.error(new TestException()) .onErrorResumeNext(Functions.justFunction(Completable.error(new TestException("second")))) .test() .assertFailureAndMessage(TestException.class, "second"); }
@Override public @NotNull Completable disconnect() { return delegate.disconnect(Mqtt3DisconnectView.DELEGATE).onErrorResumeNext(EXCEPTION_MAPPER_COMPLETABLE); }
@Override public @NotNull Completable unsubscribe(final @Nullable Mqtt3Unsubscribe unsubscribe) { return delegate.unsubscribe(MqttChecks.unsubscribe(unsubscribe)).ignoreElement() .onErrorResumeNext(EXCEPTION_MAPPER_COMPLETABLE); }
/** * Evict the cached data by group. */ public final Completable evict(final Object group) { return Completable.defer(() -> Completable.fromObservable(builder.processorProviders .process(getConfigProvider(Observable.error(new RuntimeException()), group.toString(), new EvictDynamicKeyGroup(true), false, false))) .onErrorResumeNext(exceptionAdapter::completeOnRxCacheLoaderError) ); }
default Completable offAndClose(String... topics) { Completable close = close(); Completable disconnForcibly = disconnectForcibly().onErrorResumeNext(e -> close); Completable disconnect = disconnect().ignoreElement(); Completable off = off(topics).ignoreElement().onErrorResumeNext(e -> disconnect); return isConnected() .flatMapCompletable(connected -> connected ? off : close) .andThen(disconnect).onErrorResumeNext(e -> disconnForcibly) .andThen(close); }
/** * Evict all the cached data for this provider. */ public final Completable evict() { return Completable.defer(() -> Completable.fromObservable(builder.processorProviders .process(getConfigProvider(Observable.error(new RuntimeException()), new EvictDynamicKey(true), false, false))) .onErrorResumeNext(exceptionAdapter::completeOnRxCacheLoaderError) ); }
/** * Evict all the cached data for this provider. */ public final Completable evict() { return Completable.defer(() -> Completable.fromObservable(builder.processorProviders .process(getConfigProvider(Observable.error(new RuntimeException()), "", new EvictDynamicKey(true), false, false))) .onErrorResumeNext(exceptionAdapter::completeOnRxCacheLoaderError) ); }
@Override public Completable delete(String userId) { LOGGER.debug("Delete user {}", userId); return userRepository.findById(userId) .switchIfEmpty(Maybe.error(new UserNotFoundException(userId))) .flatMapCompletable(user -> userRepository.delete(userId)) .onErrorResumeNext(ex -> { if (ex instanceof AbstractManagementException) { return Completable.error(ex); } LOGGER.error("An error occurs while trying to delete user: {}", userId, ex); return Completable.error(new TechnicalManagementException( String.format("An error occurs while trying to delete user: %s", userId), ex)); }); }
@Override public Completable deregisterPipeline(String name) { String fullname = installationPrefix() + name; return client.deregisterPlugin(fullname).async() .doOnSuccess(response -> { if (log.isDebugEnabled()) { log.debug("Deregistered pipeline {" + fullname + "} response: {" + response.toString() + "}"); } }).toCompletable() .onErrorResumeNext(ignore404) .compose(withTimeoutAndLog("Removed pipeline {" + fullname + "}", true)); }
@Override public Completable registerIngestPipeline(IndexInfo info) { String name = installationPrefix() + info.getIngestPipelineName(); JsonObject config = info.getIngestPipelineSettings(); return client.registerPipeline(name, config).async() .doOnSuccess(response -> { if (log.isDebugEnabled()) { log.debug("Registered pipeline {" + name + "} response: {" + response.toString() + "}"); } }).toCompletable() .onErrorResumeNext(error -> isResourceAlreadyExistsError(error) ? Completable.complete() : Completable.error(error)) .compose(withTimeoutAndLog("Creating pipeline {" + name + "}", true)); }