{
VersionRangeResult result = new VersionRangeResult( request );
VersionScheme versionScheme = new GenericVersionScheme();
VersionConstraint versionConstraint;
try
{
versionConstraint = versionScheme.parseVersionConstraint( request.getArtifact().getVersion() );
}
catch ( InvalidVersionSpecificationException e )
{
result.addException( e );
throw new VersionRangeResolutionException( result );
}
result.setVersionConstraint( versionConstraint );
if ( versionConstraint.getRange() == null )
{
result.addVersion( versionConstraint.getVersion() );
}
else
{
Map<String, ArtifactRepository> versionIndex = getVersions( session, result, request );
List<Version> versions = new ArrayList<Version>();
for ( Map.Entry<String, ArtifactRepository> v : versionIndex.entrySet() )
{
try
{
Version ver = versionScheme.parseVersion( v.getKey() );
if ( versionConstraint.containsVersion( ver ) )
{
versions.add( ver );
result.setRepository( ver, v.getValue() );
}
}