@Override public void failed(Throwable error) { if (error.getCause() instanceof IOException && retries.getAndIncrement() < 3) { // resend echoResource.resolveTemplate("echo", reqId).request().async().get(this); } else { System.out.print("!"); errors.offer(String.format("Request '%d' has failed: %s", reqId, error.toString())); latch.countDown(); } } });
@Benchmark public Response asyncBlock() throws Exception { return client.target("foo").request().async().get().get(); }
@Benchmark public Future<Response> asyncIgnore() throws Exception { return client.target("foo").request().async().get(new InvocationCallback<Response>() { @Override public void completed(final Response response) { // NOOP } @Override public void failed(final Throwable throwable) { // NOOP } }); }
@Override public void failed(final Throwable error) { if (error.getCause() instanceof IOException && retries.getAndIncrement() < 3) { // resend echoResource.resolveTemplate("echo", reqId).request().async().get(this); } else { invokeAndWait(new Runnable() { @Override public void run() { requestStatusLabel.setBackground(ERROR_COLOR); requestStatusLabel.setToolTipText(String.format("Request '%d' has failed: %s", reqId, error.toString())); latch.countDown(); } }); } } });
public CompletableFuture<T> get(final String url) { CompletableFuture<T> result = new CompletableFuture(); client.target(url).request(accept).accept(accept).async() .get(new InvocationCallback<String>() { @Override public void completed(String complete) { buildResponse(result, complete); } @Override public void failed(Throwable ex) { result.completeExceptionally(ex); } }); return result; } private void buildResponse(CompletableFuture<T> result,
@Override protected Position handlePosition(Position position) { if (json) { client.target(url).request().async().post(Entity.json(prepareJsonPayload(position))); } else { try { client.target(formatRequest(position)).request().async().get(); } catch (UnsupportedEncodingException | JsonProcessingException e) { LOGGER.warn("Forwarding formatting error", e); } } return position; }
request.async().get(new InvocationCallback<JsonObject>() { @Override public void completed(JsonObject json) {
for (int i = 0; i < config.requests; i++) { final int reqId = i; echoResource.resolveTemplate("echo", reqId).request().async().get(new InvocationCallback<String>() { private final AtomicInteger retries = new AtomicInteger(0);
echoResource.resolveTemplate("echo", reqId).request().async().get(new InvocationCallback<String>() { private final AtomicInteger retries = new AtomicInteger(0);
@Override public void getLocation(Network network, final LocationProviderCallback callback) { if (network.getCellTowers() != null && !network.getCellTowers().isEmpty()) { CellTower cellTower = network.getCellTowers().iterator().next(); String request = String.format(url, cellTower.getMobileCountryCode(), cellTower.getMobileNetworkCode(), cellTower.getLocationAreaCode(), cellTower.getCellId()); Context.getClient().target(request).request().async().get(new InvocationCallback<JsonObject>() { @Override public void completed(JsonObject json) { if (json.containsKey("lat") && json.containsKey("lon")) { callback.onSuccess( json.getJsonNumber("lat").doubleValue(), json.getJsonNumber("lon").doubleValue(), 0); } else { callback.onFailure(new GeolocationException("Coordinates are missing")); } } @Override public void failed(Throwable throwable) { callback.onFailure(throwable); } }); } else { callback.onFailure(new GeolocationException("No network information")); } }
@Override public <T> CompletableFuture<T> get(GenericType<T> responseType) { CompletableFutureGenericObjectCallbackAdapter<T> adapter = new CompletableFutureGenericObjectCallbackAdapter<>(responseType); asyncInvoker.get(adapter); return adapter.getCompletableFuture(); }
public <T> Future<T> asyncGetRequest(final WebTarget target, InvocationCallback<T> callback) { try { return request(target).async().get(callback); } catch (PulsarAdminException cae) { return FutureUtil.failedFuture(cae); } }
@VisibleForTesting protected <T> Future<T> invokePreparedRequest(RequestDetails entity, Class<T> responseType, AsyncInvoker invoker) { if (entity != null) { if (entity.getEntity() != null) { return invoker.method(entity.getMethod().name(), Entity.entity(entity.getEntity(), MediaType.APPLICATION_JSON_TYPE), responseType); } return invoker.method(entity.getMethod().name(), responseType); } return invoker.get(responseType); }
@Test public void testThatNewSpanIsCreatedWhenNotProvidedUsingAsyncClient() throws Exception { final WebClient client = createWebClient("/bookstore/books", openTracingClientProvider); final Future<Response> f = client.async().get(); final Response r = f.get(1, TimeUnit.SECONDS); assertEquals(Status.OK.getStatusCode(), r.getStatus()); assertThat(TestSender.getAllSpans().size(), equalTo(3)); assertThat(TestSender.getAllSpans().get(0).getOperationName(), equalTo("Get Books")); assertThat(TestSender.getAllSpans().get(1).getOperationName(), equalTo("GET /bookstore/books")); assertThat(TestSender.getAllSpans().get(2).getOperationName(), equalTo("GET " + client.getCurrentURI())); }
@Test public void testThatNewSpanIsCreatedWhenNotProvidedUsingAsyncClient() throws Exception { final WebClient client = createWebClient("/bookstore/books", braveClientProvider); final Future<Response> f = client.async().get(); final Response r = f.get(1, TimeUnit.SECONDS); assertEquals(Status.OK.getStatusCode(), r.getStatus()); assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); assertThat(TestSpanReporter.getAllSpans().get(2).name(), equalTo("get " + client.getCurrentURI())); assertThatTraceHeadersArePresent(r, false); }
@Test public void testGetBookAsyncResponse404() throws Exception { String address = "http://localhost:" + PORT + "/bookstore/bookheaders/404"; WebClient wc = createWebClient(address); Future<Response> future = wc.async().get(Response.class); assertEquals(404, future.get().getStatus()); wc.close(); }
@Test public void testGetBookAsync404() throws Exception { String address = "http://localhost:" + PORT + "/bookstore/bookheaders/404"; WebClient wc = createWebClient(address); Future<Book> future = wc.async().get(Book.class); try { future.get(); fail("Exception expected"); } catch (ExecutionException ex) { assertTrue(ex.getCause() instanceof NotFoundException); } wc.close(); }
@SuppressWarnings("rawtypes") @Test public void testGenericInvocationCallback() throws Exception { InvocationCallback<?> callback = createGenericInvocationCallback(); String address = "http://localhost:" + PORT + "/bookstore/books/check/123"; ClientBuilder.newBuilder().register(new BookServerAsyncClient.BooleanReaderWriter()) .build().target(address) .request().accept("text/boolean").async().get(callback).get(); assertTrue(((GenericInvocationCallback)callback).getResult().readEntity(Boolean.class)); }
@Test public void testGetBookAsyncNoCallback() throws Exception { String address = "http://localhost:" + PORT + "/bookstore/bookheaders/simple"; WebClient wc = createWebClient(address); Future<Book> future = wc.async().get(Book.class); Book book = future.get(); assertEquals(124L, book.getId()); validateResponse(wc); }
private void doTestGetBookAsync(String address, boolean asyncInvoker) throws InterruptedException, ExecutionException { WebClient wc = createWebClient(address); final Holder<Book> holder = new Holder<>(); InvocationCallback<Book> callback = createCallback(holder); Future<Book> future = asyncInvoker ? wc.async().get(callback) : wc.get(callback); Book book = future.get(); assertSame(book, holder.value); assertEquals(124L, book.getId()); validateResponse(wc); }