public void fillInputData()

in wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java [107:193]


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

        String visitingUrl = buildUrl(resource);

        List<String> visitedUrls = new ArrayList<>();

        for (int redirectCount = 0; redirectCount < MAX_REDIRECTS; redirectCount++) {
            if (visitedUrls.contains(visitingUrl)) {
                // TODO add a test for this message
                throw new TransferFailedException("Cyclic http redirect detected. Aborting! " + visitingUrl);
            }
            visitedUrls.add(visitingUrl);

            URL url = null;
            try {
                url = new URL(visitingUrl);
            } catch (MalformedURLException e) {
                // TODO add test for this
                throw new ResourceDoesNotExistException("Invalid repository URL: " + e.getMessage(), e);
            }

            HttpURLConnection urlConnection = null;

            try {
                urlConnection = (HttpURLConnection) url.openConnection(this.proxy);
            } catch (IOException e) {
                // TODO: add test for this
                String message = formatTransferFailedMessage(visitingUrl, UNKNOWN_STATUS_CODE, null, getProxyInfo());
                // TODO include e.getMessage appended to main message?
                throw new TransferFailedException(message, e);
            }

            try {

                urlConnection.setRequestProperty("Accept-Encoding", "gzip,deflate");
                if (!useCache) {
                    urlConnection.setRequestProperty("Pragma", "no-cache");
                }

                addHeaders(urlConnection);

                // TODO: handle all response codes
                int responseCode = urlConnection.getResponseCode();
                String reasonPhrase = urlConnection.getResponseMessage();

                // TODO Move 401/407 to AuthenticationException after WAGON-587
                if (responseCode == HttpURLConnection.HTTP_FORBIDDEN
                        || responseCode == HttpURLConnection.HTTP_UNAUTHORIZED
                        || responseCode == HttpURLConnection.HTTP_PROXY_AUTH) {
                    throw new AuthorizationException(
                            formatAuthorizationMessage(buildUrl(resource), responseCode, reasonPhrase, getProxyInfo()));
                }
                if (responseCode == HttpURLConnection.HTTP_MOVED_PERM
                        || responseCode == HttpURLConnection.HTTP_MOVED_TEMP) {
                    visitingUrl = urlConnection.getHeaderField("Location");
                    continue;
                }

                InputStream is = urlConnection.getInputStream();
                String contentEncoding = urlConnection.getHeaderField("Content-Encoding");
                boolean isGZipped = contentEncoding != null && "gzip".equalsIgnoreCase(contentEncoding);
                if (isGZipped) {
                    is = new GZIPInputStream(is);
                }
                boolean isDeflated = contentEncoding != null && "deflate".equalsIgnoreCase(contentEncoding);
                if (isDeflated) {
                    is = new DeflaterInputStream(is);
                }
                inputData.setInputStream(is);
                resource.setLastModified(urlConnection.getLastModified());
                resource.setContentLength(urlConnection.getContentLength());
                break;

            } catch (FileNotFoundException e) {
                // this could be 404 Not Found or 410 Gone - we don't have access to which it was.
                // TODO: 2019-10-03 url used should list all visited/redirected urls, not just the original
                throw new ResourceDoesNotExistException(
                        formatResourceDoesNotExistMessage(
                                buildUrl(resource), UNKNOWN_STATUS_CODE, null, getProxyInfo()),
                        e);
            } catch (IOException originalIOException) {
                throw convertHttpUrlConnectionException(originalIOException, urlConnection, buildUrl(resource));
            }
        }
    }