1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.impl;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.net.URI;
26 import java.net.URISyntaxException;
27
28 import org.apache.maven.api.RemoteRepository;
29 import org.apache.maven.api.Session;
30 import org.apache.maven.api.services.Transport;
31 import org.apache.maven.api.services.TransportProvider;
32 import org.apache.maven.api.services.TransportProviderException;
33 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
34 import org.eclipse.aether.transfer.NoTransporterException;
35
36 import static java.util.Objects.requireNonNull;
37
38 @Named
39 @Singleton
40 public class DefaultTransportProvider implements TransportProvider {
41 private final org.eclipse.aether.spi.connector.transport.TransporterProvider transporterProvider;
42
43 @Inject
44 public DefaultTransportProvider(TransporterProvider transporterProvider) {
45 this.transporterProvider = requireNonNull(transporterProvider);
46 }
47
48 @Override
49 public Transport transport(Session session, RemoteRepository repository) {
50 try {
51 URI baseURI = new URI(repository.getUrl());
52 return new DefaultTransport(
53 baseURI,
54 transporterProvider.newTransporter(
55 ((DefaultSession) session).getSession(),
56 ((DefaultRemoteRepository) repository).getRepository()));
57 } catch (URISyntaxException e) {
58 throw new TransportProviderException("Remote repository URL invalid", e);
59 } catch (NoTransporterException e) {
60 throw new TransportProviderException("Unsupported remote repository", e);
61 }
62 }
63 }