@Override public void sendAsync(RowMap r, AbstractAsyncProducer.CallbackCompleter cc) throws Exception { String key = this.partitioner.getKinesisKey(r); String value = r.toJSON(outputConfig); int vsize = value.length(); ByteBuffer encodedValue = ByteBuffer.wrap(value.getBytes("UTF-8")); // release the reference to ease memory pressure if(!KinesisCallback.logger.isDebugEnabled()) { value = null; } FutureCallback<UserRecordResult> callback = new KinesisCallback(cc, r.getNextPosition(), key, value, this.succeededMessageCount, this.failedMessageCount, this.succeededMessageMeter, this.failedMessageMeter, this.context); try { ListenableFuture<UserRecordResult> future = kinesisProducer.addUserRecord(kinesisStream, key, encodedValue); Futures.addCallback(future, callback); } catch(IllegalArgumentException t) { callback.onFailure(t); logger.error("Database:" + r.getDatabase() + ", Table:" + r.getTable() + ", PK:" + r.getRowIdentity().toConcatString() + ", Size:" + Integer.toString(vsize)); } }
@GwtIncompatible // Mockito public void testOnSuccessThrowsRuntimeException() throws Exception { RuntimeException exception = new RuntimeException(); String result = "result"; SettableFuture<String> future = SettableFuture.create(); @SuppressWarnings("unchecked") // Safe for a mock FutureCallback<String> callback = Mockito.mock(FutureCallback.class); addCallback(future, callback, directExecutor()); Mockito.doThrow(exception).when(callback).onSuccess(result); future.set(result); assertEquals(result, future.get()); Mockito.verify(callback).onSuccess(result); Mockito.verifyNoMoreInteractions(callback); }
@Override public void onFailure(Throwable t) { if (shouldProcess()) { callback.onFailure(t); } } };
@GwtIncompatible // Mockito public void testOnSuccessThrowsError() throws Exception { class TestError extends Error {} TestError error = new TestError(); String result = "result"; SettableFuture<String> future = SettableFuture.create(); @SuppressWarnings("unchecked") // Safe for a mock FutureCallback<String> callback = Mockito.mock(FutureCallback.class); addCallback(future, callback, directExecutor()); Mockito.doThrow(error).when(callback).onSuccess(result); try { future.set(result); fail("Should have thrown"); } catch (TestError e) { assertSame(error, e); } assertEquals(result, future.get()); Mockito.verify(callback).onSuccess(result); Mockito.verifyNoMoreInteractions(callback); }
@Override public void onFailure(Throwable t) { resourceCallback.onFailure(t); } });
@Override public void onSuccess(T result) { if (shouldProcess()) { callback.onSuccess(result); } }
@Override public void onFailure(Throwable t) { if (shouldProcess()) { callback.onFailure(t); } } };
@Override public void onSuccess(T result) { if (shouldProcess()) { callback.onSuccess(result); } }
@Override public void onSuccess(StepContext context, Object result) { v.onSuccess(result); }
@Override public void onFailure(StepContext context, Throwable t) { v.onFailure(t); }
private void checkCompletionNeed() { if (callback == null || (message instanceof PacketOutInput)) { completed = true; if (callback != null) { callback.onSuccess(null); callback = null; } committed = false; } }
@Override public void onFailure(Throwable t) { try { callback.onFailure(t); } finally { asyncSemaphore.release(); } } };
@Override public void onSuccess(V result) { try { callback.onSuccess(result); } finally { done.set(result); } }