1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.connector.basic;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23
24 import java.util.Collections;
25 import java.util.Map;
26
27 import org.eclipse.aether.RepositorySystemSession;
28 import org.eclipse.aether.repository.RemoteRepository;
29 import org.eclipse.aether.spi.checksums.ProvidedChecksumsSource;
30 import org.eclipse.aether.spi.connector.RepositoryConnector;
31 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
32 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
33 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
34 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
35 import org.eclipse.aether.spi.io.FileProcessor;
36 import org.eclipse.aether.spi.locator.Service;
37 import org.eclipse.aether.spi.locator.ServiceLocator;
38 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
39
40 import static java.util.Objects.requireNonNull;
41
42
43
44
45
46
47 @Named("basic")
48 public final class BasicRepositoryConnectorFactory implements RepositoryConnectorFactory, Service {
49 private TransporterProvider transporterProvider;
50
51 private RepositoryLayoutProvider layoutProvider;
52
53 private ChecksumPolicyProvider checksumPolicyProvider;
54
55 private FileProcessor fileProcessor;
56
57 private Map<String, ProvidedChecksumsSource> providedChecksumsSources;
58
59 private float priority;
60
61
62
63
64
65
66 public BasicRepositoryConnectorFactory() {
67
68 }
69
70 @Inject
71 BasicRepositoryConnectorFactory(
72 TransporterProvider transporterProvider,
73 RepositoryLayoutProvider layoutProvider,
74 ChecksumPolicyProvider checksumPolicyProvider,
75 FileProcessor fileProcessor,
76 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
77 setTransporterProvider(transporterProvider);
78 setRepositoryLayoutProvider(layoutProvider);
79 setChecksumPolicyProvider(checksumPolicyProvider);
80 setFileProcessor(fileProcessor);
81 setProvidedChecksumSources(providedChecksumsSources);
82 }
83
84 public void initService(ServiceLocator locator) {
85 setTransporterProvider(locator.getService(TransporterProvider.class));
86 setRepositoryLayoutProvider(locator.getService(RepositoryLayoutProvider.class));
87 setChecksumPolicyProvider(locator.getService(ChecksumPolicyProvider.class));
88 setFileProcessor(locator.getService(FileProcessor.class));
89 setProvidedChecksumSources(Collections.emptyMap());
90 }
91
92
93
94
95
96
97
98 public BasicRepositoryConnectorFactory setTransporterProvider(TransporterProvider transporterProvider) {
99 this.transporterProvider = requireNonNull(transporterProvider, "transporter provider cannot be null");
100 return this;
101 }
102
103
104
105
106
107
108
109 public BasicRepositoryConnectorFactory setRepositoryLayoutProvider(RepositoryLayoutProvider layoutProvider) {
110 this.layoutProvider = requireNonNull(layoutProvider, "repository layout provider cannot be null");
111 return this;
112 }
113
114
115
116
117
118
119
120 public BasicRepositoryConnectorFactory setChecksumPolicyProvider(ChecksumPolicyProvider checksumPolicyProvider) {
121 this.checksumPolicyProvider = requireNonNull(checksumPolicyProvider, "checksum policy provider cannot be null");
122 return this;
123 }
124
125
126
127
128
129
130
131 public BasicRepositoryConnectorFactory setFileProcessor(FileProcessor fileProcessor) {
132 this.fileProcessor = requireNonNull(fileProcessor, "file processor cannot be null");
133 return this;
134 }
135
136
137
138
139
140
141
142
143 public BasicRepositoryConnectorFactory setProvidedChecksumSources(
144 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
145 this.providedChecksumsSources =
146 requireNonNull(providedChecksumsSources, "provided checksum sources cannot be null");
147 return this;
148 }
149
150 public float getPriority() {
151 return priority;
152 }
153
154
155
156
157
158
159
160 public BasicRepositoryConnectorFactory setPriority(float priority) {
161 this.priority = priority;
162 return this;
163 }
164
165 public RepositoryConnector newInstance(RepositorySystemSession session, RemoteRepository repository)
166 throws NoRepositoryConnectorException {
167 requireNonNull(session, "session cannot be null");
168 requireNonNull(repository, "repository cannot be null");
169
170 return new BasicRepositoryConnector(
171 session,
172 repository,
173 transporterProvider,
174 layoutProvider,
175 checksumPolicyProvider,
176 fileProcessor,
177 providedChecksumsSources);
178 }
179 }