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

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

Introduction

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

Prototype

String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, ArtifactRepository repository);

Source Link

Usage

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

License:Apache License

/**
 * ???/*from  w  ww. j av  a  2  s .co m*/
 * 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);
    }
}

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

License:Apache License

private boolean loadMetadata(RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
        ArtifactRepository localRepository, Map previousMetadata) throws RepositoryMetadataReadException {
    boolean setRepository = false;

    File metadataFile = new File(localRepository.getBasedir(),
            localRepository.pathOfLocalRepositoryMetadata(repoMetadata, remoteRepository));

    if (metadataFile.exists()) {
        Metadata metadata = readMetadata(metadataFile);

        if (repoMetadata.isSnapshot() && (previousMetadata != null)) {
            previousMetadata.put(remoteRepository, metadata);
        }/*from   w ww.j ava  2 s.c  om*/

        if (repoMetadata.getMetadata() != null) {
            setRepository = repoMetadata.getMetadata().merge(metadata);
        } else {
            repoMetadata.setMetadata(metadata);
            setRepository = true;
        }
    }
    return setRepository;
}

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

License:Apache License

private File getArtifactMetadataFromDeploymentRepository(ArtifactMetadata metadata,
        ArtifactRepository localRepository, ArtifactRepository remoteRepository)
        throws TransferFailedException {
    File file = new File(localRepository.getBasedir(),
            localRepository.pathOfLocalRepositoryMetadata(metadata, remoteRepository));

    try {//from   w ww.  j ava 2  s  . c  om
        wagonManager.getArtifactMetadataFromDeploymentRepository(metadata, remoteRepository, file,
                ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN);
    } catch (ResourceDoesNotExistException e) {
        getLogger().info(metadata + " could not be found on repository: " + remoteRepository.getId()
                + ", so will be created");

        // delete the local copy so the old details aren't used.
        if (file.exists()) {
            file.delete();
        }
    }
    return file;
}

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

License:Apache License

public void deploy(ArtifactMetadata metadata, ArtifactRepository localRepository,
        ArtifactRepository deploymentRepository) throws RepositoryMetadataDeploymentException {
    if (!wagonManager.isOnline()) {
        // deployment shouldn't silently fail when offline
        throw new RepositoryMetadataDeploymentException(
                "System is offline. Cannot deploy metadata:\n" + metadata.extendedToString());
    }// w  ww  . java 2s.  co  m

    File file;
    if (metadata instanceof RepositoryMetadata) {
        getLogger().info("Retrieving previous metadata from " + deploymentRepository.getId());
        try {
            file = getArtifactMetadataFromDeploymentRepository(metadata, localRepository, deploymentRepository);
        } catch (TransferFailedException e) {
            throw new RepositoryMetadataDeploymentException(
                    metadata + " could not be retrieved from repository: " + deploymentRepository.getId()
                            + " due to an error: " + e.getMessage(),
                    e);
        }
    } else {
        // It's a POM - we don't need to retrieve it first
        file = new File(localRepository.getBasedir(),
                localRepository.pathOfLocalRepositoryMetadata(metadata, deploymentRepository));
    }

    try {
        metadata.storeInLocalRepository(localRepository, deploymentRepository);
    } catch (RepositoryMetadataStoreException e) {
        throw new RepositoryMetadataDeploymentException("Error installing metadata: " + e.getMessage(), e);
    }

    try {
        wagonManager.putArtifactMetadata(file, metadata, deploymentRepository);
    } catch (TransferFailedException e) {
        throw new RepositoryMetadataDeploymentException("Error while deploying metadata: " + e.getMessage(), e);
    }
}