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