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

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

Introduction

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

Prototype

boolean isSnapshot();

Source Link

Document

Whether this represents a snapshot.

Usage

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

License:Apache License

/**
 * ???/*w  w  w . j a  v a  2  s.  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);
    }
}

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

License:Apache License

private void mergeMetadata(RepositoryMetadata metadata, List remoteRepositories,
        ArtifactRepository localRepository)
        throws RepositoryMetadataStoreException, RepositoryMetadataReadException {
    // TODO: currently this is first wins, but really we should take the latest by comparing either the
    // snapshot timestamp, or some other timestamp later encoded into the metadata.
    // TODO: this needs to be repeated here so the merging doesn't interfere with the written metadata
    //  - we'd be much better having a pristine input, and an ongoing metadata for merging instead

    Map previousMetadata = new HashMap();
    ArtifactRepository selected = null;//from  www  .  ja va2 s.  c  om
    for (Iterator i = remoteRepositories.iterator(); i.hasNext();) {
        ArtifactRepository repository = (ArtifactRepository) i.next();

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

        if (policy.isEnabled() && loadMetadata(metadata, repository, localRepository, previousMetadata)) {
            metadata.setRepository(repository);
            selected = repository;
        }
    }
    //        if ( loadMetadata( metadata, localRepository, localRepository, previousMetadata ) )
    //        {
    //            metadata.setRepository( null );
    //            selected = localRepository;
    //        }

    updateSnapshotMetadata(metadata, previousMetadata, selected, localRepository);
}

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   w  w  w  . j av a 2 s  . c o 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);
    }
}

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. jav a 2s  .  c  o m

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