Skip to content

Commit

Permalink
SHRINKRES-177 Fix exception thrown when local metadata was not found …
Browse files Browse the repository at this point in the history
…while resolving version range.
  • Loading branch information
TadeasKriz authored and kpiwko committed Apr 14, 2014
1 parent 2438757 commit 7b4a115
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 9 deletions.
24 changes: 24 additions & 0 deletions impl-maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,30 @@
</target>
</configuration>
</execution>
<execution>
<!-- We need to duplicate all maven-metadata-local.xml with the new name maven-metadata.xml,
so we can use the repository as remote (otherwise for example version range resolution
will fail, because of missing maven-metadata.xml file) -->
<id>create-nonlocal-maven-metadata</id>
<phase>test-compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${basedir}/target/repository">
<fileset dir="${basedir}/target/repository">
<include name="**/maven-metadata-local.xml" />
</fileset>
<mapper>
<chainedmapper>
<globmapper from="*maven-metadata-local.xml" to="*maven-metadata.xml" casesensitive="no" />
</chainedmapper>
</mapper>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,16 +289,23 @@ public MavenVersionRangeResult resolveVersionRange(final MavenCoordinate coordin

try {
final VersionRangeResult versionRangeResult = system.resolveVersionRange(session, versionRangeRequest);

if (!versionRangeResult.getVersions().isEmpty()) {
return new MavenVersionRangeResultImpl(artifact, versionRangeResult);
}
final List<Exception> exceptions = versionRangeResult.getExceptions();
if (!exceptions.isEmpty()) {
if(exceptions.isEmpty()) {
return new MavenVersionRangeResultImpl(artifact, versionRangeResult);
} else {
StringBuilder builder = new StringBuilder("Version range request failed with ")
.append(exceptions.size()).append(" exceptions.").append("\n");

int counter = 1;
for (final Exception exception : exceptions) {
log.log(Level.SEVERE, "Version range request failed", exception);
builder.append(counter++).append("/ ").append(exception.getLocalizedMessage()).append("\n");
}
throw new VersionResolutionException("Version range request failed", exceptions.get(0));
throw new VersionResolutionException(builder.toString());
}

return new MavenVersionRangeResultImpl(artifact, versionRangeResult);
} catch (VersionRangeResolutionException vrre) {
throw new VersionResolutionException("Version range request failed", vrre);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,20 @@

package org.jboss.shrinkwrap.resolver.impl.maven.integration;

import org.jboss.shrinkwrap.resolver.api.maven.ConfigurableMavenResolverSystem;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.jboss.shrinkwrap.resolver.api.maven.MavenVersionRangeResult;
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate;
import org.jboss.shrinkwrap.resolver.api.maven.repository.MavenRemoteRepositories;
import org.jboss.shrinkwrap.resolver.impl.maven.bootstrap.MavenSettingsBuilder;
import org.jboss.shrinkwrap.resolver.impl.maven.util.TestFileUtil;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.File;
import java.util.List;

import static org.junit.Assert.assertEquals;
Expand All @@ -38,13 +44,13 @@
*/
public class VersionResolvingUnitTestCase {

@BeforeClass
public static void setRemoteRepository() {
@Before
public void setRemoteRepository() {
System.setProperty(MavenSettingsBuilder.ALT_LOCAL_REPOSITORY_LOCATION, "target/repository");
}

@AfterClass
public static void clearRemoteRepository() {
@After
public void clearRemoteRepository() {
System.clearProperty(MavenSettingsBuilder.ALT_LOCAL_REPOSITORY_LOCATION);
}

Expand All @@ -65,6 +71,38 @@ public void shouldResolveConcreteVersion() {
assertEquals(lowest.getVersion(), "1.0.0");
}

@Test
public void shouldResolveGreaterOrEqualWithoutLocalMetadata() throws Exception {
final String fakeSettings = "target/settings/profiles/settings.xml";
final String nonExistingRepository = "target/non-existing-repository";

TestFileUtil.removeDirectory(new File(nonExistingRepository));

System.clearProperty(MavenSettingsBuilder.ALT_GLOBAL_SETTINGS_XML_LOCATION);
System.clearProperty(MavenSettingsBuilder.ALT_USER_SETTINGS_XML_LOCATION);

System.setProperty(MavenSettingsBuilder.ALT_LOCAL_REPOSITORY_LOCATION, nonExistingRepository);

// given
final String lowestCoordinate = "org.jboss.shrinkwrap.test:test-deps-b:jar:1.0.0";
final String highestCoordinate = "org.jboss.shrinkwrap.test:test-deps-b:jar:2.0.0";

// when
final MavenVersionRangeResult versionRangeResult = Maven.configureResolver()
.fromFile(fakeSettings)
.resolveVersionRange("org.jboss.shrinkwrap.test:test-deps-b:[1.0.0,)");
final MavenCoordinate lowest = versionRangeResult.getLowestVersion();
final MavenCoordinate highest = versionRangeResult.getHighestVersion();
final List<MavenCoordinate> versions = versionRangeResult.getVersions();

// then
assertEquals(lowestCoordinate, lowest.toCanonicalForm());
assertEquals(highestCoordinate, highest.toCanonicalForm());
assertEquals(2, versions.size());
assertEquals(lowest, versions.get(0));
assertEquals(highest, versions.get(1));
}

@Test
public void shouldResolveLowerOrEqual() throws Exception {
// given
Expand Down

0 comments on commit 7b4a115

Please sign in to comment.