List of usage examples for org.apache.maven.repository.legacy.metadata DefaultMetadataResolutionRequest DefaultMetadataResolutionRequest
public DefaultMetadataResolutionRequest()
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; }