public static <T> String callETagRaw(ClientHandler<T> handler) { MeshResponse<T> response; try { response = handler.handle().invoke(); } catch (Exception e) { response = new MeshResponse<>(Future.failedFuture(e)); } latchFor(response); assertSuccess(response); return ETag.extract(response.getRawResponse().getHeader(ETAG)); }
/** * Call the given handler, latch for the future and assert success. Then return the result. * * @param handler * handler * @param etag * @param <T> * type of the returned object * @return result of the future */ public static <T> String callETag(ClientHandler<T> handler, String etag, boolean isWeak, int statusCode) { MeshResponse<T> response; try { MeshRequest<T> request = handler.handle(); request.getRequest().putHeader(IF_NONE_MATCH, ETag.prepareHeader(etag, isWeak)); response = request.invoke(); } catch (Exception e) { response = new MeshResponse<>(Future.failedFuture(e)); } latchFor(response); assertSuccess(response); int actualStatusCode = response.getRawResponse().statusCode(); String actualETag = ETag.extract(response.getRawResponse().getHeader(ETAG)); assertEquals("The response code did not match.", statusCode, actualStatusCode); if (statusCode == 304) { assertEquals(etag, actualETag); assertNull("The response should be null since we got a 304", response.result()); } return actualETag; }