private void fillInputData()

in wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java [1016:1121]


    private void fillInputData(int wait, InputData inputData)
            throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException {
        Resource resource = inputData.getResource();

        String url = buildUrl(resource);
        HttpGet getMethod = new HttpGet(url);
        long timestamp = resource.getLastModified();
        if (timestamp > 0) {
            SimpleDateFormat fmt = new SimpleDateFormat("EEE, dd-MMM-yy HH:mm:ss zzz", Locale.US);
            fmt.setTimeZone(GMT_TIME_ZONE);
            Header hdr = new BasicHeader("If-Modified-Since", fmt.format(new Date(timestamp)));
            fireTransferDebug("sending ==> " + hdr + "(" + timestamp + ")");
            getMethod.addHeader(hdr);
        }

        try {
            CloseableHttpResponse response = execute(getMethod);
            closeable = response;

            fireTransferDebug(formatTransferDebugMessage(
                    url,
                    response.getStatusLine().getStatusCode(),
                    response.getStatusLine().getReasonPhrase(),
                    getProxyInfo()));
            int statusCode = response.getStatusLine().getStatusCode();

            switch (statusCode) {
                case HttpStatus.SC_OK:
                    break;

                case HttpStatus.SC_NOT_MODIFIED:
                    // return, leaving last modified set to original value so getIfNewer should return unmodified
                    return;

                    // TODO Move 401/407 to AuthenticationException after WAGON-587
                case HttpStatus.SC_FORBIDDEN:
                case HttpStatus.SC_UNAUTHORIZED:
                case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
                    EntityUtils.consumeQuietly(response.getEntity());
                    fireSessionConnectionRefused();
                    throw new AuthorizationException(formatAuthorizationMessage(
                            url,
                            response.getStatusLine().getStatusCode(),
                            response.getStatusLine().getReasonPhrase(),
                            getProxyInfo()));

                case HttpStatus.SC_NOT_FOUND:
                case HttpStatus.SC_GONE:
                    EntityUtils.consumeQuietly(response.getEntity());
                    throw new ResourceDoesNotExistException(formatResourceDoesNotExistMessage(
                            url,
                            response.getStatusLine().getStatusCode(),
                            response.getStatusLine().getReasonPhrase(),
                            getProxyInfo()));

                case SC_TOO_MANY_REQUESTS:
                    EntityUtils.consumeQuietly(response.getEntity());
                    fillInputData(backoff(wait, url), inputData);
                    break;

                    // add more entries here
                default:
                    EntityUtils.consumeQuietly(response.getEntity());
                    cleanupGetTransfer(resource);
                    TransferFailedException e = new TransferFailedException(formatTransferFailedMessage(
                            url,
                            response.getStatusLine().getStatusCode(),
                            response.getStatusLine().getReasonPhrase(),
                            getProxyInfo()));
                    fireTransferError(resource, e, TransferEvent.REQUEST_GET);
                    throw e;
            }

            Header contentLengthHeader = response.getFirstHeader("Content-Length");

            if (contentLengthHeader != null) {
                try {
                    long contentLength = Long.parseLong(contentLengthHeader.getValue());

                    resource.setContentLength(contentLength);
                } catch (NumberFormatException e) {
                    fireTransferDebug(
                            "error parsing content length header '" + contentLengthHeader.getValue() + "' " + e);
                }
            }

            Header lastModifiedHeader = response.getFirstHeader("Last-Modified");
            if (lastModifiedHeader != null) {
                Date lastModified = DateUtils.parseDate(lastModifiedHeader.getValue());
                if (lastModified != null) {
                    resource.setLastModified(lastModified.getTime());
                    fireTransferDebug(
                            "last-modified = " + lastModifiedHeader.getValue() + " (" + lastModified.getTime() + ")");
                }
            }

            HttpEntity entity = response.getEntity();
            if (entity != null) {
                inputData.setInputStream(entity.getContent());
            }
        } catch (IOException | HttpException | InterruptedException e) {
            fireTransferError(resource, e, TransferEvent.REQUEST_GET);

            throw new TransferFailedException(formatTransferFailedMessage(url, getProxyInfo()), e);
        }
    }