/** * Checks whether a given resource (with absolute URL!) is available with a HEAD request on it. */ public static boolean isResourceAvailable(String path) { Client client = Client.create(); WebResource wr = client.resource(path); boolean res; try { ClientResponse response = wr.head(); res = (response.getStatusInfo().getFamily().equals(Family.SUCCESSFUL)); } catch (com.sun.jersey.api.client.ClientHandlerException ex) { // In the case of a java.net.ConnectException, return false res = false; } return res; }
private int makeFirstRequest(int retry) { ClientResponse response = connection.path("ping").head(); int statusCode = response.getClientResponseStatus().getStatusCode(); if (statusCode != ClientResponse.Status.SERVICE_UNAVAILABLE.getStatusCode()) { response.close(); return 0; } MultivaluedMap<String, String> responseHeaders = response.getHeaders(); response.close(); String retryAfterRaw = responseHeaders.getFirst("Retry-After"); int retryAfter = (retryAfterRaw != null) ? Integer.valueOf(retryAfterRaw) : -1; return Math.max(retryAfter, calculateDelay(randRetry, retry)); }
@Override public void ensureBucketExists() { WebResource wr = client.resource(UriBuilder.fromPath(endpoint + "/n/{arg1}/b/{arg2}") .build(region, namespace, bucketName)); wr.accept(MediaType.APPLICATION_JSON_TYPE); ClientResponse rsp = wr.head(); if (rsp.getStatus() == 404) { CreateBucketDetails createBucketDetails = CreateBucketDetails.builder() .name(bucketName) .compartmentId(compartmentId) .build(); wr = client.resource(UriBuilder.fromPath(endpoint + "/n/{arg1}/b/") .build(region, namespace)); wr.accept(MediaType.APPLICATION_JSON_TYPE); try { byte[] bytes = objectMapper.writeValueAsBytes(createBucketDetails); wr.post(new String(bytes, StandardCharsets.UTF_8)); } catch (IOException e) { throw new RuntimeException(e); } } else if (rsp.getStatus() != 200) { throw new RuntimeException(rsp.toString()); } }