in wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java [784:835]
private boolean resourceExists(int wait, String resourceName)
throws TransferFailedException, AuthorizationException {
String url = buildUrl(resourceName);
HttpHead headMethod = new HttpHead(url);
try {
CloseableHttpResponse response = execute(headMethod);
try {
int statusCode = response.getStatusLine().getStatusCode();
boolean result;
switch (statusCode) {
case HttpStatus.SC_OK:
result = true;
break;
case HttpStatus.SC_NOT_MODIFIED:
result = true;
break;
// TODO Move 401/407 to AuthenticationException after WAGON-587
case HttpStatus.SC_FORBIDDEN:
case HttpStatus.SC_UNAUTHORIZED:
case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
throw new AuthorizationException(formatAuthorizationMessage(
url,
response.getStatusLine().getStatusCode(),
response.getStatusLine().getReasonPhrase(),
getProxyInfo()));
case HttpStatus.SC_NOT_FOUND:
case HttpStatus.SC_GONE:
result = false;
break;
case SC_TOO_MANY_REQUESTS:
return resourceExists(backoff(wait, resourceName), resourceName);
// add more entries here
default:
throw new TransferFailedException(formatTransferFailedMessage(
url,
response.getStatusLine().getStatusCode(),
response.getStatusLine().getReasonPhrase(),
getProxyInfo()));
}
return result;
} finally {
response.close();
}
} catch (IOException | HttpException | InterruptedException e) {
throw new TransferFailedException(formatTransferFailedMessage(url, getProxyInfo()), e);
}
}