@Override public void run() { p.onError(ex); } };
private void closeOutstandingSubscriptions() { subscriptionForId.values().forEach(subscription -> { subscription.getSubject() .onError(new IOException("Connection was closed")); }); }
private <T extends Notification<?>> void reportSubscriptionError( BehaviorSubject<T> subject, EthSubscribe subscriptionReply) { Response.Error error = subscriptionReply.getError(); log.error("Subscription request returned error: {}", error.getMessage()); subject.onError( new IOException(String.format( "Subscription request failed with error: %s", error.getMessage() )) ); }
private <T extends Notification<?>> void subscribeToEventsStream( Request request, BehaviorSubject<T> subject, Class<T> responseType) { subscriptionRequestForId.put( request.getId(), new WebSocketSubscription<>(subject, responseType)); try { send(request, EthSubscribe.class); } catch (IOException e) { log.error("Failed to subscribe to RPC events with request id {}", request.getId()); subject.onError(e); } }
@Test public void testSubscribeToErrorOnlyEmitsOnError() { BehaviorSubject<String> subject = BehaviorSubject.createDefault("default"); subject.onNext("one"); RuntimeException re = new RuntimeException("test error"); subject.onError(re); Observer<String> observer = TestHelper.mockObserver(); subject.subscribe(observer); verify(observer, never()).onNext("default"); verify(observer, never()).onNext("one"); verify(observer, times(1)).onError(re); verify(observer, never()).onComplete(); }
@Test public void testCompletedAfterErrorIsNotSent() { BehaviorSubject<String> subject = BehaviorSubject.createDefault("default"); Observer<String> observer = TestHelper.mockObserver(); subject.subscribe(observer); subject.onNext("one"); subject.onError(testException); subject.onNext("two"); subject.onComplete(); verify(observer, times(1)).onNext("default"); verify(observer, times(1)).onNext("one"); verify(observer, times(1)).onError(testException); verify(observer, never()).onNext("two"); verify(observer, never()).onComplete(); }
@Test public void testCompletedAfterErrorIsNotSent2() { BehaviorSubject<String> subject = BehaviorSubject.createDefault("default"); Observer<String> observer = TestHelper.mockObserver(); subject.subscribe(observer); subject.onNext("one"); subject.onError(testException); subject.onNext("two"); subject.onComplete(); verify(observer, times(1)).onNext("default"); verify(observer, times(1)).onNext("one"); verify(observer, times(1)).onError(testException); verify(observer, never()).onNext("two"); verify(observer, never()).onComplete(); Observer<Object> o2 = TestHelper.mockObserver(); subject.subscribe(o2); verify(o2, times(1)).onError(testException); verify(o2, never()).onNext(any()); verify(o2, never()).onComplete(); }
@Test public void onErrorAfterComplete() { BehaviorSubject<Object> p = BehaviorSubject.create(); p.onComplete(); List<Throwable> errors = TestHelper.trackPluginErrors(); try { p.onError(new TestException()); TestHelper.assertUndeliverable(errors, 0, TestException.class); } finally { RxJavaPlugins.reset(); } }
@Test public void testCurrentStateMethodsError() { BehaviorSubject<Object> as = BehaviorSubject.create(); assertFalse(as.hasValue()); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getValue()); assertNull(as.getThrowable()); as.onError(new TestException()); assertFalse(as.hasValue()); assertTrue(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getValue()); assertTrue(as.getThrowable() instanceof TestException); }
@SuppressWarnings("deprecation") @Test public void testBehaviorSubjectError() { BehaviorSubject<Integer> async = BehaviorSubject.create(); TestException te = new TestException(); async.onError(te); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertTrue(serial.hasThrowable()); assertSame(te, serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Override public void onError(Throwable t) { mData.onError(t); }
/** * 手动发布错误 * * @param e e */ public void postRxError(Throwable e) { mData.onError(e); }
@Override public void onError(Throwable t) { mData.onError(t); }
@Test public void errorIsHandled() throws Exception { sut.addOnPropertyChangedCallback(new TestPropertyChangedCallback()); sourceSubject.onError(new Throwable()); assertEquals(INITIAL_VALUE, sut.get()); }