Example usage for org.apache.maven.artifact.repository.metadata RepositoryMetadata storeInLocalRepository

List of usage examples for org.apache.maven.artifact.repository.metadata RepositoryMetadata storeInLocalRepository

Introduction

In this page you can find the example usage for org.apache.maven.artifact.repository.metadata RepositoryMetadata storeInLocalRepository.

Prototype

void storeInLocalRepository(ArtifactRepository localRepository, ArtifactRepository remoteRepository)
        throws RepositoryMetadataStoreException;

Source Link

Document

Store the metadata in the local repository.

Usage

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

License:Apache License

/**
 * ???//from   w ww.j a  v  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 void updateSnapshotMetadata(RepositoryMetadata metadata, Map previousMetadata,
        ArtifactRepository selected, ArtifactRepository localRepository)
        throws RepositoryMetadataStoreException {
    // TODO: this could be a lot nicer... should really be in the snapshot transformation?
    if (metadata.isSnapshot()) {
        Metadata prevMetadata = metadata.getMetadata();

        for (Iterator i = previousMetadata.keySet().iterator(); i.hasNext();) {
            ArtifactRepository repository = (ArtifactRepository) i.next();
            Metadata m = (Metadata) previousMetadata.get(repository);
            if (repository.equals(selected)) {
                if (m.getVersioning() == null) {
                    m.setVersioning(new Versioning());
                }//from  ww w .j  ava 2s  .co  m

                if (m.getVersioning().getSnapshot() == null) {
                    m.getVersioning().setSnapshot(new Snapshot());
                }
                /*
                                    if ( !m.getVersioning().getSnapshot().isLocalCopy() )
                                    {
                // TODO: I think this is incorrect (it results in localCopy set in a remote profile). Probably
                //   harmless so not removing at this point until full tests in place.
                m.getVersioning().getSnapshot().setLocalCopy( true );
                metadata.setMetadata( m );
                metadata.storeInLocalRepository( localRepository, repository );
                                    }
                */
            } else {
                if ((m.getVersioning() != null) && (m.getVersioning().getSnapshot() != null)
                        && m.getVersioning().getSnapshot().isLocalCopy()) {
                    m.getVersioning().getSnapshot().setLocalCopy(false);
                    metadata.setMetadata(m);
                    metadata.storeInLocalRepository(localRepository, repository);
                }
            }
        }

        metadata.setMetadata(prevMetadata);
    }
}