Example usage for org.apache.maven.artifact.repository ArtifactRepository setBlacklisted

List of usage examples for org.apache.maven.artifact.repository ArtifactRepository setBlacklisted

Introduction

In this page you can find the example usage for org.apache.maven.artifact.repository ArtifactRepository setBlacklisted.

Prototype

@Deprecated
    void setBlacklisted(boolean blackListed);

Source Link

Usage

From source file:org.ck.maven.plugins.pom.versions.service.version.PomVersionRepositoryMetadataManager.java

License:Apache License

/**
 * ???/* w  ww. j  a  v  a2s. c om*/
 * metadata ???
 * remoteRepositories maven
 * localRepository maven
 */
public void resolve(RepositoryMetadata metadata, List remoteRepositories, ArtifactRepository localRepository)
        throws RepositoryMetadataResolutionException {
    this.getLogger().debug("use " + this.getClass().getName());
    boolean alreadyResolved = alreadyResolved(metadata);
    if (!alreadyResolved) {
        for (Iterator i = remoteRepositories.iterator(); i.hasNext();) {
            ArtifactRepository repository = (ArtifactRepository) i.next();

            ArtifactRepositoryPolicy policy = metadata.isSnapshot() ? repository.getSnapshots()
                    : repository.getReleases();

            if (!policy.isEnabled()) {
                getLogger().debug("Skipping disabled repository " + repository.getId());
            } else if (repository.isBlacklisted()) {
                getLogger().debug("Skipping blacklisted repository " + repository.getId());
            } else {
                File file = new File(localRepository.getBasedir(),
                        localRepository.pathOfLocalRepositoryMetadata(metadata, repository));

                boolean checkForUpdates = !file.exists()
                        || policy.checkOutOfDate(new Date(file.lastModified()));

                if (checkForUpdates) {
                    if (wagonManager.isOnline()) {
                        getLogger()
                                .debug(metadata.getKey() + ": checking for updates from " + repository.getId());

                        boolean storeMetadata = false;
                        try {
                            wagonManager.getArtifactMetadata(metadata, repository, file,
                                    policy.getChecksumPolicy());
                            storeMetadata = true;
                        } catch (ResourceDoesNotExistException e) {
                            getLogger().debug(
                                    metadata + " could not be found on repository: " + repository.getId());

                            // delete the local copy so the old details aren't used.
                            if (file.exists()) {
                                file.delete();
                            }
                            storeMetadata = true;
                        } catch (TransferFailedException e) {
                            getLogger().warn(metadata + " could not be retrieved from repository: "
                                    + repository.getId() + " due to an error: " + e.getMessage());
                            getLogger().debug("Exception", e);

                            getLogger().info("Repository '" + repository.getId() + "' will be blacklisted");
                            repository.setBlacklisted(true);

                            // TODO: [jc; 08-Nov-2005] revisit this for 2.1
                            // suppressing logging to avoid logging this error twice.
                        }
                        if (storeMetadata) {
                            // touch file so that this is not checked again until interval has passed
                            if (file.exists()) {
                                file.setLastModified(System.currentTimeMillis());
                            } else {
                                //??
                                // this ensures that files are not continuously checked when they don't exist remotely

                                // TODO: [jdcasey] If this happens as a result of ResourceDoesNotExistException, what effect will it have on subsequent runs?
                                // Will the updateInterval come into play cleanly, or will this plug up the works??
                                try {
                                    metadata.storeInLocalRepository(localRepository, repository);
                                } catch (RepositoryMetadataStoreException e) {
                                    throw new RepositoryMetadataResolutionException(
                                            "Unable to store local copy of metadata: " + e.getMessage(), e);
                                }
                            }
                        }
                    } else {
                        getLogger().debug("System is offline. Cannot resolve metadata:\n"
                                + metadata.extendedToString() + "\n\n");
                    }
                }
            }
        }

        // TODO: [jdcasey] what happens here when the system is offline, or there is a TransferFailedException
        // ...and no metadata file is written?
        cachedMetadata.add(metadata.getKey());
    }

    try {
        mergeMetadata(metadata, remoteRepositories, localRepository);
    } catch (RepositoryMetadataStoreException e) {
        throw new RepositoryMetadataResolutionException(
                "Unable to store local copy of metadata: " + e.getMessage(), e);
    } catch (RepositoryMetadataReadException e) {
        throw new RepositoryMetadataResolutionException(
                "Unable to read local copy of metadata: " + e.getMessage(), e);
    }
}