--- src/main/java/io/tesla/aether/connector/AetherRepositoryConnector.java.orig 2014-05-01 02:41:07.000000000 +0100
+++ src/main/java/io/tesla/aether/connector/AetherRepositoryConnector.java 2014-05-24 16:17:15.050666912 +0100
@@ -57,6 +57,7 @@
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.impl.DefaultServiceLocator;
import org.eclipse.aether.repository.AuthenticationContext;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.repository.RepositoryPolicy;
@@ -68,7 +69,10 @@
import org.eclipse.aether.spi.connector.MetadataUpload;
import org.eclipse.aether.spi.connector.RepositoryConnector;
import org.eclipse.aether.spi.connector.Transfer;
+import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
+import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
import org.eclipse.aether.spi.io.FileProcessor;
+import org.eclipse.aether.spi.locator.ServiceLocator;
//import org.eclipse.aether.spi.log.Logger;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
import org.eclipse.aether.transfer.ArtifactTransferException;
@@ -76,6 +80,7 @@
import org.eclipse.aether.transfer.MetadataNotFoundException;
import org.eclipse.aether.transfer.MetadataTransferException;
import org.eclipse.aether.transfer.NoRepositoryConnectorException;
+import org.eclipse.aether.transfer.NoRepositoryLayoutException;
import org.eclipse.aether.transfer.TransferCancelledException;
import org.eclipse.aether.transfer.TransferEvent;
import org.eclipse.aether.transfer.TransferEvent.EventType;
@@ -84,8 +89,6 @@
import org.eclipse.aether.transfer.TransferResource;
import org.eclipse.aether.util.ChecksumUtils;
import org.eclipse.aether.util.ConfigUtils;
-import org.eclipse.aether.util.repository.layout.MavenDefaultLayout;
-import org.eclipse.aether.util.repository.layout.RepositoryLayout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -95,8 +98,10 @@
class AetherRepositoryConnector implements RepositoryConnector {
private final Logger logger = LoggerFactory.getLogger(AetherRepositoryConnector.class);
+
+ private final ServiceLocator serviceLocator = new DefaultServiceLocator();
- private final RepositoryLayout layout = new MavenDefaultLayout();
+ private final RepositoryLayout layout;
private final TransferListener listener;
private final RepositorySystemSession session;
private final AuthenticationContext repoAuthenticationContext;
@@ -165,7 +170,7 @@
this(repository, session, fileProcessor, null);
}
- public AetherRepositoryConnector(RemoteRepository repository, RepositorySystemSession session, FileProcessor fileProcessor, SSLSocketFactory sslSocketFactory) throws NoRepositoryConnectorException {
+ public AetherRepositoryConnector(RemoteRepository repository, RepositorySystemSession session, FileProcessor fileProcessor, SSLSocketFactory sslSocketFactory) throws NoRepositoryConnectorException {
//
// Right now this only support a Maven layout which is what we mean by type
//
@@ -183,6 +188,13 @@
this.fileProcessor = fileProcessor;
this.session = session;
+ RepositoryLayoutProvider repositoryLayoutProvider = serviceLocator.getService(RepositoryLayoutProvider.class);
+ try {
+ this.layout = repositoryLayoutProvider.newRepositoryLayout(session, repository);
+ } catch (NoRepositoryLayoutException e) {
+ throw new RuntimeException(e);
+ }
+
AetherClientConfig config = new AetherClientConfig();
repoAuthenticationContext = AuthenticationContext.forRepository(session, repository);
@@ -284,14 +296,14 @@
Collection<GetTask<?>> tasks = new ArrayList<GetTask<?>>();
for (MetadataDownload download : metadataDownloads) {
- String resource = layout.getPath(download.getMetadata()).getPath();
+ String resource = layout.getLocation(download.getMetadata(), false).getPath();
GetTask<?> task = new GetTask<MetadataTransfer>(resource, download.getFile(), download.getChecksumPolicy(), latch, download, METADATA);
tasks.add(task);
task.run();
}
for (ArtifactDownload download : artifactDownloads) {
- String resource = layout.getPath(download.getArtifact()).getPath();
+ String resource = layout.getLocation(download.getArtifact(), false).getPath();
GetTask<?> task = new GetTask<ArtifactTransfer>(resource, download.isExistenceCheck() ? null : download.getFile(), download.getChecksumPolicy(), latch, download, ARTIFACT);
tasks.add(task);
task.run();
@@ -324,14 +336,14 @@
Collection<PutTask<?>> tasks = new ArrayList<PutTask<?>>();
for (ArtifactUpload upload : artifactUploads) {
- String path = layout.getPath(upload.getArtifact()).getPath();
+ String path = layout.getLocation(upload.getArtifact(), true).getPath();
PutTask<?> task = new PutTask<ArtifactTransfer>(path, upload.getFile(), latch, upload, ARTIFACT);
tasks.add(task);
task.run();
}
for (MetadataUpload upload : metadataUploads) {
- String path = layout.getPath(upload.getMetadata()).getPath();
+ String path = layout.getLocation(upload.getMetadata(), true).getPath();
PutTask<?> task = new PutTask<MetadataTransfer>(path, upload.getFile(), latch, upload, METADATA);
tasks.add(task);
task.run();
@@ -413,7 +425,6 @@
public void run() {
- download.setState(Transfer.State.ACTIVE);
String uri = buildUrl(path);
TransferResource transferResource = new TransferResource(repository.getUrl(), path, fileInLocalRepository, download.getTrace());
@@ -682,7 +693,6 @@
public void flush() {
wrapper.wrap(download, exception, repository);
- download.setState(Transfer.State.DONE);
}
private void rename(File from, File to) throws IOException {
@@ -713,7 +723,6 @@
public void run() {
- upload.setState(Transfer.State.ACTIVE);
final TransferResource transferResource = new TransferResource(repository.getUrl(), path, file, upload.getTrace());
try {
@@ -762,7 +771,6 @@
public void flush() {
wrapper.wrap(upload, exception, repository);
- upload.setState(Transfer.State.DONE);
}
private void uploadChecksums(File file, String uri) {