private boolean resourceExists()

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);
        }
    }