--- 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> tasks = new ArrayList>(); for (MetadataDownload download : metadataDownloads) { - String resource = layout.getPath(download.getMetadata()).getPath(); + String resource = layout.getLocation(download.getMetadata(), false).getPath(); GetTask task = new GetTask(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(resource, download.isExistenceCheck() ? null : download.getFile(), download.getChecksumPolicy(), latch, download, ARTIFACT); tasks.add(task); task.run(); @@ -324,14 +336,14 @@ Collection> tasks = new ArrayList>(); for (ArtifactUpload upload : artifactUploads) { - String path = layout.getPath(upload.getArtifact()).getPath(); + String path = layout.getLocation(upload.getArtifact(), true).getPath(); PutTask task = new PutTask(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(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) {