Example usage for org.apache.maven.repository.legacy.metadata DefaultMetadataResolutionRequest DefaultMetadataResolutionRequest

List of usage examples for org.apache.maven.repository.legacy.metadata DefaultMetadataResolutionRequest DefaultMetadataResolutionRequest

Introduction

In this page you can find the example usage for org.apache.maven.repository.legacy.metadata DefaultMetadataResolutionRequest DefaultMetadataResolutionRequest.

Prototype

public DefaultMetadataResolutionRequest() 

Source Link

Usage

From source file:org.commonjava.emb.component.vfind.VersionFinder.java

License:Apache License

protected List<String> retrieveMatchingVersions(final String groupId, final String artifactId,
        final SchemeAwareVersionRange range, final Repository... remoteRepositories)
        throws VersionFinderException, EMBArtifactVersionException {
    final List<ArtifactRepository> repos = new ArrayList<ArtifactRepository>(
            remoteRepositories == null ? 0 : remoteRepositories.length);

    if (remoteRepositories != null) {
        for (final Repository repository : remoteRepositories) {
            try {
                repos.add(repositorySystem.buildArtifactRepository(repository));
            } catch (final InvalidRepositoryException e) {
                throw new VersionFinderException("Failed to build ArtifactRepository from: %s\nReason: %s", e,
                        repository, e.getMessage());
            }//  ww  w  .  j a  v  a 2  s  .  c  o  m
        }
    }

    final Artifact artifact = repositorySystem.createArtifact(groupId, artifactId, range.toString(), "pom");

    DefaultMetadataResolutionRequest req;
    try {
        req = new DefaultMetadataResolutionRequest().setArtifact(artifact).setForceUpdate(true)
                .setRemoteRepositories(repos)
                .setLocalRepository(repositorySystem.createDefaultLocalRepository());
    } catch (final InvalidRepositoryException e) {
        throw new VersionFinderException("Failed to build LOCAL ArtifactRepository.\nReason: %s", e,
                e.getMessage());
    }

    final ArtifactRepositoryMetadata arm = new ArtifactRepositoryMetadata(artifact);

    try {
        metadataManager.resolve(arm, req);
    } catch (final RepositoryMetadataResolutionException e) {
        throw new VersionFinderException("Failed to resolve available versions for: %s\nReason: %s", e,
                artifact, e.getMessage());
    }

    if (arm.getMetadata() != null && arm.getMetadata().getVersioning() != null) {
        final List<String> versions = arm.getMetadata().getVersioning().getVersions();
        if (versions != null && !versions.isEmpty()) {
            final List<String> result = new ArrayList<String>(versions.size());
            for (final String version : versions) {
                final ArtifactVersion v = new SchemeAwareArtifactVersion(version, range.getVersionScheme());
                if (range.containsVersion(v)) {
                    result.add(version);
                }
            }

            return result;
        }
    }

    return null;
}