use of org.sonatype.aether.repository.RemoteRepository in project sonatype-aether by sonatype.
the class DefaultArtifactResolverTest method testArtifactNotFoundCache.
@Test
public void testArtifactNotFoundCache() throws Exception {
RecordingRepositoryConnector connector = new RecordingRepositoryConnector() {
@Override
public void get(Collection<? extends ArtifactDownload> artifactDownloads, Collection<? extends MetadataDownload> metadataDownloads) {
super.get(artifactDownloads, metadataDownloads);
for (ArtifactDownload download : artifactDownloads) {
download.getFile().delete();
ArtifactTransferException exception = new ArtifactNotFoundException(download.getArtifact(), null, "not found");
download.setException(exception);
}
}
};
remoteRepositoryManager.setConnector(connector);
resolver.setUpdateCheckManager(new DefaultUpdateCheckManager());
session.setNotFoundCachingEnabled(true);
session.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_NEVER);
RemoteRepository remoteRepo = new RemoteRepository("id", "default", "file:///");
Artifact artifact1 = artifact;
Artifact artifact2 = artifact.setVersion("ver2");
ArtifactRequest request1 = new ArtifactRequest(artifact1, Arrays.asList(remoteRepo), "");
ArtifactRequest request2 = new ArtifactRequest(artifact2, Arrays.asList(remoteRepo), "");
connector.setExpectGet(new Artifact[] { artifact1, artifact2 });
try {
resolver.resolveArtifacts(session, Arrays.asList(request1, request2));
fail("expected exception");
} catch (ArtifactResolutionException e) {
connector.assertSeenExpected();
}
TestFileUtils.write("artifact", new File(lrm.getRepository().getBasedir(), lrm.getPathForLocalArtifact(artifact2)));
lrm.setArtifactAvailability(artifact2, false);
DefaultUpdateCheckManagerTest.resetSessionData(session);
connector.resetActual();
connector.setExpectGet(new Artifact[0]);
try {
resolver.resolveArtifacts(session, Arrays.asList(request1, request2));
fail("expected exception");
} catch (ArtifactResolutionException e) {
connector.assertSeenExpected();
for (ArtifactResult result : e.getResults()) {
Throwable t = result.getExceptions().get(0);
assertEquals(t.toString(), true, t instanceof ArtifactNotFoundException);
assertEquals(t.toString(), true, t.getMessage().contains("cached"));
}
}
}
use of org.sonatype.aether.repository.RemoteRepository in project sonatype-aether by sonatype.
the class DefaultDependencyCollectorTest method testArtifactDescriptorResolutionNotRestrictedToRepoHostingSelectedVersion.
@Test
public void testArtifactDescriptorResolutionNotRestrictedToRepoHostingSelectedVersion() throws Exception {
RemoteRepository repo2 = new RemoteRepository("test", "default", "file:///");
final List<RemoteRepository> repos = new ArrayList<RemoteRepository>();
collector.setArtifactDescriptorReader(new ArtifactDescriptorReader() {
public ArtifactDescriptorResult readArtifactDescriptor(RepositorySystemSession session, ArtifactDescriptorRequest request) throws ArtifactDescriptorException {
repos.addAll(request.getRepositories());
return new ArtifactDescriptorResult(request);
}
});
DependencyNode root = parser.parseLiteral("verrange:parent:jar:[1,):compile");
List<Dependency> dependencies = Arrays.asList(root.getDependency());
CollectRequest request = new CollectRequest(dependencies, null, Arrays.asList(repository, repo2));
CollectResult result = collector.collectDependencies(session, request);
assertEquals(0, result.getExceptions().size());
assertEquals(2, repos.size());
assertEquals("id", repos.get(0).getId());
assertEquals("test", repos.get(1).getId());
}
use of org.sonatype.aether.repository.RemoteRepository in project sonatype-aether by sonatype.
the class SimpleLocalRepositoryManager method find.
public LocalMetadataResult find(RepositorySystemSession session, LocalMetadataRequest request) {
LocalMetadataResult result = new LocalMetadataResult(request);
String path;
Metadata metadata = request.getMetadata();
String context = request.getContext();
RemoteRepository remote = request.getRepository();
if (remote != null) {
path = getPathForRemoteMetadata(metadata, remote, context);
} else {
path = getPathForLocalMetadata(metadata);
}
File file = new File(getRepository().getBasedir(), path);
if (file.isFile()) {
result.setFile(file);
}
return result;
}
use of org.sonatype.aether.repository.RemoteRepository in project sonatype-aether by sonatype.
the class SimpleLocalRepositoryManager method getRepositoryKey.
String getRepositoryKey(RemoteRepository repository, String context) {
String key;
if (repository.isRepositoryManager()) {
// repository serves dynamic contents, take request parameters into account for key
StringBuilder buffer = new StringBuilder(128);
buffer.append(repository.getId());
buffer.append('-');
SortedSet<String> subKeys = new TreeSet<String>();
for (RemoteRepository mirroredRepo : repository.getMirroredRepositories()) {
subKeys.add(mirroredRepo.getId());
}
SimpleDigest digest = new SimpleDigest();
digest.update(context);
for (String subKey : subKeys) {
digest.update(subKey);
}
buffer.append(digest.digest());
key = buffer.toString();
} else {
// repository serves static contents, its id is sufficient as key
key = repository.getId();
}
return key;
}
use of org.sonatype.aether.repository.RemoteRepository in project sonatype-aether by sonatype.
the class DefaultArtifactResolverTest method testResolveRemoteArtifactUnsuccessful.
@Test
public void testResolveRemoteArtifactUnsuccessful() throws IOException, ArtifactResolutionException {
RecordingRepositoryConnector connector = new RecordingRepositoryConnector() {
@Override
public void get(Collection<? extends ArtifactDownload> artifactDownloads, Collection<? extends MetadataDownload> metadataDownloads) {
super.get(artifactDownloads, metadataDownloads);
ArtifactDownload download = artifactDownloads.iterator().next();
ArtifactTransferException exception = new ArtifactNotFoundException(download.getArtifact(), null, "not found");
download.setException(exception);
}
};
connector.setExpectGet(artifact);
remoteRepositoryManager.setConnector(connector);
ArtifactRequest request = new ArtifactRequest(artifact, null, "");
request.addRepository(new RemoteRepository("id", "default", "file:///"));
try {
resolver.resolveArtifact(session, request);
fail("expected exception");
} catch (ArtifactResolutionException e) {
connector.assertSeenExpected();
assertNotNull(e.getResults());
assertEquals(1, e.getResults().size());
ArtifactResult result = e.getResults().get(0);
assertSame(request, result.getRequest());
assertFalse(result.getExceptions().isEmpty());
assertTrue(result.getExceptions().get(0) instanceof ArtifactNotFoundException);
Artifact resolved = result.getArtifact();
assertNull(resolved);
}
}
Aggregations