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 static java.util.Objects.requireNonNull;
22
23 import java.net.URI;
24 import java.net.URISyntaxException;
25 import javax.inject.Inject;
26 import javax.inject.Named;
27 import javax.inject.Singleton;
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 @Named
37 @Singleton
38 public class DefaultTransportProvider implements TransportProvider {
39 private final org.eclipse.aether.spi.connector.transport.TransporterProvider transporterProvider;
40
41 @Inject
42 public DefaultTransportProvider(TransporterProvider transporterProvider) {
43 this.transporterProvider = requireNonNull(transporterProvider);
44 }
45
46 @Override
47 public Transport transport(Session session, RemoteRepository repository) {
48 try {
49 URI baseURI = new URI(repository.getUrl());
50 return new DefaultTransport(
51 baseURI,
52 transporterProvider.newTransporter(
53 ((DefaultSession) session).getSession(),
54 ((DefaultRemoteRepository) repository).getRepository()));
55 } catch (URISyntaxException e) {
56 throw new TransportProviderException("Remote repository URL invalid", e);
57 } catch (NoTransporterException e) {
58 throw new TransportProviderException("Unsupported remote repository", e);
59 }
60 }
61 }