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(BasicRepositoryConnectorFactory.NAME)
48 public final class BasicRepositoryConnectorFactory implements RepositoryConnectorFactory, Service {
49 public static final String NAME = "basic";
50 private TransporterProvider transporterProvider;
51
52 private RepositoryLayoutProvider layoutProvider;
53
54 private ChecksumPolicyProvider checksumPolicyProvider;
55
56 private FileProcessor fileProcessor;
57
58 private Map<String, ProvidedChecksumsSource> providedChecksumsSources;
59
60 private float priority;
61
62
63
64
65
66
67 @Deprecated
68 public BasicRepositoryConnectorFactory() {
69
70 }
71
72 @Inject
73 public BasicRepositoryConnectorFactory(
74 TransporterProvider transporterProvider,
75 RepositoryLayoutProvider layoutProvider,
76 ChecksumPolicyProvider checksumPolicyProvider,
77 FileProcessor fileProcessor,
78 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
79 setTransporterProvider(transporterProvider);
80 setRepositoryLayoutProvider(layoutProvider);
81 setChecksumPolicyProvider(checksumPolicyProvider);
82 setFileProcessor(fileProcessor);
83 setProvidedChecksumSources(providedChecksumsSources);
84 }
85
86 public void initService(ServiceLocator locator) {
87 setTransporterProvider(locator.getService(TransporterProvider.class));
88 setRepositoryLayoutProvider(locator.getService(RepositoryLayoutProvider.class));
89 setChecksumPolicyProvider(locator.getService(ChecksumPolicyProvider.class));
90 setFileProcessor(locator.getService(FileProcessor.class));
91 setProvidedChecksumSources(Collections.emptyMap());
92 }
93
94
95
96
97
98
99
100 public BasicRepositoryConnectorFactory setTransporterProvider(TransporterProvider transporterProvider) {
101 this.transporterProvider = requireNonNull(transporterProvider, "transporter provider cannot be null");
102 return this;
103 }
104
105
106
107
108
109
110
111 public BasicRepositoryConnectorFactory setRepositoryLayoutProvider(RepositoryLayoutProvider layoutProvider) {
112 this.layoutProvider = requireNonNull(layoutProvider, "repository layout provider cannot be null");
113 return this;
114 }
115
116
117
118
119
120
121
122 public BasicRepositoryConnectorFactory setChecksumPolicyProvider(ChecksumPolicyProvider checksumPolicyProvider) {
123 this.checksumPolicyProvider = requireNonNull(checksumPolicyProvider, "checksum policy provider cannot be null");
124 return this;
125 }
126
127
128
129
130
131
132
133 public BasicRepositoryConnectorFactory setFileProcessor(FileProcessor fileProcessor) {
134 this.fileProcessor = requireNonNull(fileProcessor, "file processor cannot be null");
135 return this;
136 }
137
138
139
140
141
142
143
144
145 public BasicRepositoryConnectorFactory setProvidedChecksumSources(
146 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
147 this.providedChecksumsSources =
148 requireNonNull(providedChecksumsSources, "provided checksum sources cannot be null");
149 return this;
150 }
151
152 public float getPriority() {
153 return priority;
154 }
155
156
157
158
159
160
161
162 public BasicRepositoryConnectorFactory setPriority(float priority) {
163 this.priority = priority;
164 return this;
165 }
166
167 public RepositoryConnector newInstance(RepositorySystemSession session, RemoteRepository repository)
168 throws NoRepositoryConnectorException {
169 requireNonNull(session, "session cannot be null");
170 requireNonNull(repository, "repository cannot be null");
171
172 return new BasicRepositoryConnector(
173 session,
174 repository,
175 transporterProvider,
176 layoutProvider,
177 checksumPolicyProvider,
178 fileProcessor,
179 providedChecksumsSources);
180 }
181 }