1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.supplier;
20
21 import java.util.HashMap;
22 import java.util.HashSet;
23 import java.util.Map;
24 import java.util.function.Supplier;
25
26 import org.apache.maven.model.building.DefaultModelBuilderFactory;
27 import org.apache.maven.model.building.ModelBuilder;
28 import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
29 import org.apache.maven.repository.internal.DefaultModelCacheFactory;
30 import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
31 import org.apache.maven.repository.internal.DefaultVersionResolver;
32 import org.apache.maven.repository.internal.ModelCacheFactory;
33 import org.apache.maven.repository.internal.PluginsMetadataGeneratorFactory;
34 import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
35 import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
36 import org.eclipse.aether.RepositoryListener;
37 import org.eclipse.aether.RepositorySystem;
38 import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
39 import org.eclipse.aether.impl.ArtifactDescriptorReader;
40 import org.eclipse.aether.impl.ArtifactResolver;
41 import org.eclipse.aether.impl.DependencyCollector;
42 import org.eclipse.aether.impl.Deployer;
43 import org.eclipse.aether.impl.Installer;
44 import org.eclipse.aether.impl.LocalRepositoryProvider;
45 import org.eclipse.aether.impl.MetadataGeneratorFactory;
46 import org.eclipse.aether.impl.MetadataResolver;
47 import org.eclipse.aether.impl.OfflineController;
48 import org.eclipse.aether.impl.RemoteRepositoryFilterManager;
49 import org.eclipse.aether.impl.RemoteRepositoryManager;
50 import org.eclipse.aether.impl.RepositoryConnectorProvider;
51 import org.eclipse.aether.impl.RepositoryEventDispatcher;
52 import org.eclipse.aether.impl.RepositorySystemLifecycle;
53 import org.eclipse.aether.impl.UpdateCheckManager;
54 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
55 import org.eclipse.aether.impl.VersionRangeResolver;
56 import org.eclipse.aether.impl.VersionResolver;
57 import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
58 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
59 import org.eclipse.aether.internal.impl.DefaultDeployer;
60 import org.eclipse.aether.internal.impl.DefaultFileProcessor;
61 import org.eclipse.aether.internal.impl.DefaultInstaller;
62 import org.eclipse.aether.internal.impl.DefaultLocalPathComposer;
63 import org.eclipse.aether.internal.impl.DefaultLocalPathPrefixComposerFactory;
64 import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
65 import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
66 import org.eclipse.aether.internal.impl.DefaultOfflineController;
67 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
68 import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
69 import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
70 import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
71 import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
72 import org.eclipse.aether.internal.impl.DefaultRepositorySystemLifecycle;
73 import org.eclipse.aether.internal.impl.DefaultTrackingFileManager;
74 import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
75 import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
76 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
77 import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
78 import org.eclipse.aether.internal.impl.LocalPathComposer;
79 import org.eclipse.aether.internal.impl.LocalPathPrefixComposerFactory;
80 import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
81 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
82 import org.eclipse.aether.internal.impl.TrackingFileManager;
83 import org.eclipse.aether.internal.impl.checksum.DefaultChecksumAlgorithmFactorySelector;
84 import org.eclipse.aether.internal.impl.checksum.Md5ChecksumAlgorithmFactory;
85 import org.eclipse.aether.internal.impl.checksum.Sha1ChecksumAlgorithmFactory;
86 import org.eclipse.aether.internal.impl.checksum.Sha256ChecksumAlgorithmFactory;
87 import org.eclipse.aether.internal.impl.checksum.Sha512ChecksumAlgorithmFactory;
88 import org.eclipse.aether.internal.impl.checksum.SparseDirectoryTrustedChecksumsSource;
89 import org.eclipse.aether.internal.impl.checksum.SummaryFileTrustedChecksumsSource;
90 import org.eclipse.aether.internal.impl.checksum.TrustedToProvidedChecksumsSourceAdapter;
91 import org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector;
92 import org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate;
93 import org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector;
94 import org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector;
95 import org.eclipse.aether.internal.impl.filter.DefaultRemoteRepositoryFilterManager;
96 import org.eclipse.aether.internal.impl.filter.GroupIdRemoteRepositoryFilterSource;
97 import org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource;
98 import org.eclipse.aether.internal.impl.resolution.TrustedChecksumsArtifactResolverPostProcessor;
99 import org.eclipse.aether.internal.impl.synccontext.DefaultSyncContextFactory;
100 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
101 import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
102 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactory;
103 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl;
104 import org.eclipse.aether.named.NamedLockFactory;
105 import org.eclipse.aether.named.providers.FileLockNamedLockFactory;
106 import org.eclipse.aether.named.providers.LocalReadWriteLockNamedLockFactory;
107 import org.eclipse.aether.named.providers.LocalSemaphoreNamedLockFactory;
108 import org.eclipse.aether.named.providers.NoopNamedLockFactory;
109 import org.eclipse.aether.spi.checksums.ProvidedChecksumsSource;
110 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
111 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
112 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory;
113 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactorySelector;
114 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
115 import org.eclipse.aether.spi.connector.filter.RemoteRepositoryFilterSource;
116 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
117 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
118 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
119 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
120 import org.eclipse.aether.spi.io.FileProcessor;
121 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
122 import org.eclipse.aether.spi.resolution.ArtifactResolverPostProcessor;
123 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
124 import org.eclipse.aether.transport.file.FileTransporterFactory;
125 import org.eclipse.aether.transport.http.ChecksumExtractor;
126 import org.eclipse.aether.transport.http.HttpTransporterFactory;
127 import org.eclipse.aether.transport.http.Nexus2ChecksumExtractor;
128 import org.eclipse.aether.transport.http.XChecksumChecksumExtractor;
129
130
131
132
133
134
135
136
137
138 public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
139 protected FileProcessor getFileProcessor() {
140 return new DefaultFileProcessor();
141 }
142
143 protected TrackingFileManager getTrackingFileManager() {
144 return new DefaultTrackingFileManager();
145 }
146
147 protected LocalPathComposer getLocalPathComposer() {
148 return new DefaultLocalPathComposer();
149 }
150
151 protected LocalPathPrefixComposerFactory getLocalPathPrefixComposerFactory() {
152 return new DefaultLocalPathPrefixComposerFactory();
153 }
154
155 protected RepositorySystemLifecycle getRepositorySystemLifecycle() {
156 return new DefaultRepositorySystemLifecycle();
157 }
158
159 protected OfflineController getOfflineController() {
160 return new DefaultOfflineController();
161 }
162
163 protected UpdatePolicyAnalyzer getUpdatePolicyAnalyzer() {
164 return new DefaultUpdatePolicyAnalyzer();
165 }
166
167 protected ChecksumPolicyProvider getChecksumPolicyProvider() {
168 return new DefaultChecksumPolicyProvider();
169 }
170
171 protected UpdateCheckManager getUpdateCheckManager(
172 TrackingFileManager trackingFileManager, UpdatePolicyAnalyzer updatePolicyAnalyzer) {
173 return new DefaultUpdateCheckManager(trackingFileManager, updatePolicyAnalyzer);
174 }
175
176 protected Map<String, NamedLockFactory> getNamedLockFactories() {
177 HashMap<String, NamedLockFactory> result = new HashMap<>();
178 result.put(NoopNamedLockFactory.NAME, new NoopNamedLockFactory());
179 result.put(LocalReadWriteLockNamedLockFactory.NAME, new LocalReadWriteLockNamedLockFactory());
180 result.put(LocalSemaphoreNamedLockFactory.NAME, new LocalSemaphoreNamedLockFactory());
181 result.put(FileLockNamedLockFactory.NAME, new FileLockNamedLockFactory());
182 return result;
183 }
184
185 protected Map<String, NameMapper> getNameMappers() {
186 HashMap<String, NameMapper> result = new HashMap<>();
187 result.put(NameMappers.STATIC_NAME, NameMappers.staticNameMapper());
188 result.put(NameMappers.GAV_NAME, NameMappers.gavNameMapper());
189 result.put(NameMappers.GAECV_NAME, NameMappers.gaecvNameMapper());
190 result.put(NameMappers.DISCRIMINATING_NAME, NameMappers.discriminatingNameMapper());
191 result.put(NameMappers.FILE_GAV_NAME, NameMappers.fileGavNameMapper());
192 result.put(NameMappers.FILE_GAECV_NAME, NameMappers.fileGaecvNameMapper());
193 result.put(NameMappers.FILE_HGAV_NAME, NameMappers.fileHashingGavNameMapper());
194 result.put(NameMappers.FILE_HGAECV_NAME, NameMappers.fileHashingGaecvNameMapper());
195 return result;
196 }
197
198 protected NamedLockFactoryAdapterFactory getNamedLockFactoryAdapterFactory(
199 Map<String, NamedLockFactory> namedLockFactories,
200 Map<String, NameMapper> nameMappers,
201 RepositorySystemLifecycle repositorySystemLifecycle) {
202 return new NamedLockFactoryAdapterFactoryImpl(namedLockFactories, nameMappers, repositorySystemLifecycle);
203 }
204
205 protected SyncContextFactory getSyncContextFactory(NamedLockFactoryAdapterFactory namedLockFactoryAdapterFactory) {
206 return new DefaultSyncContextFactory(namedLockFactoryAdapterFactory);
207 }
208
209 protected Map<String, ChecksumAlgorithmFactory> getChecksumAlgorithmFactories() {
210 HashMap<String, ChecksumAlgorithmFactory> result = new HashMap<>();
211 result.put(Sha512ChecksumAlgorithmFactory.NAME, new Sha512ChecksumAlgorithmFactory());
212 result.put(Sha256ChecksumAlgorithmFactory.NAME, new Sha256ChecksumAlgorithmFactory());
213 result.put(Sha1ChecksumAlgorithmFactory.NAME, new Sha1ChecksumAlgorithmFactory());
214 result.put(Md5ChecksumAlgorithmFactory.NAME, new Md5ChecksumAlgorithmFactory());
215 return result;
216 }
217
218 protected ChecksumAlgorithmFactorySelector getChecksumAlgorithmFactorySelector(
219 Map<String, ChecksumAlgorithmFactory> checksumAlgorithmFactories) {
220 return new DefaultChecksumAlgorithmFactorySelector(checksumAlgorithmFactories);
221 }
222
223 protected Map<String, RepositoryLayoutFactory> getRepositoryLayoutFactories(
224 ChecksumAlgorithmFactorySelector checksumAlgorithmFactorySelector) {
225 HashMap<String, RepositoryLayoutFactory> result = new HashMap<>();
226 result.put(
227 Maven2RepositoryLayoutFactory.NAME,
228 new Maven2RepositoryLayoutFactory(checksumAlgorithmFactorySelector));
229 return result;
230 }
231
232 protected RepositoryLayoutProvider getRepositoryLayoutProvider(
233 Map<String, RepositoryLayoutFactory> repositoryLayoutFactories) {
234 return new DefaultRepositoryLayoutProvider(new HashSet<>(repositoryLayoutFactories.values()));
235 }
236
237 protected LocalRepositoryProvider getLocalRepositoryProvider(
238 LocalPathComposer localPathComposer,
239 TrackingFileManager trackingFileManager,
240 LocalPathPrefixComposerFactory localPathPrefixComposerFactory) {
241 HashSet<LocalRepositoryManagerFactory> localRepositoryProviders = new HashSet<>(2);
242 localRepositoryProviders.add(new SimpleLocalRepositoryManagerFactory(localPathComposer));
243 localRepositoryProviders.add(new EnhancedLocalRepositoryManagerFactory(
244 localPathComposer, trackingFileManager, localPathPrefixComposerFactory));
245 return new DefaultLocalRepositoryProvider(localRepositoryProviders);
246 }
247
248 protected RemoteRepositoryManager getRemoteRepositoryManager(
249 UpdatePolicyAnalyzer updatePolicyAnalyzer, ChecksumPolicyProvider checksumPolicyProvider) {
250 return new DefaultRemoteRepositoryManager(updatePolicyAnalyzer, checksumPolicyProvider);
251 }
252
253 protected Map<String, RemoteRepositoryFilterSource> getRemoteRepositoryFilterSources(
254 RepositorySystemLifecycle repositorySystemLifecycle, RepositoryLayoutProvider repositoryLayoutProvider) {
255 HashMap<String, RemoteRepositoryFilterSource> result = new HashMap<>();
256 result.put(
257 GroupIdRemoteRepositoryFilterSource.NAME,
258 new GroupIdRemoteRepositoryFilterSource(repositorySystemLifecycle));
259 result.put(
260 PrefixesRemoteRepositoryFilterSource.NAME,
261 new PrefixesRemoteRepositoryFilterSource(repositoryLayoutProvider));
262 return result;
263 }
264
265 protected RemoteRepositoryFilterManager getRemoteRepositoryFilterManager(
266 Map<String, RemoteRepositoryFilterSource> remoteRepositoryFilterSources) {
267 return new DefaultRemoteRepositoryFilterManager(remoteRepositoryFilterSources);
268 }
269
270 protected Map<String, RepositoryListener> getRepositoryListeners() {
271 return new HashMap<>();
272 }
273
274 protected RepositoryEventDispatcher getRepositoryEventDispatcher(
275 Map<String, RepositoryListener> repositoryListeners) {
276 return new DefaultRepositoryEventDispatcher(new HashSet<>(repositoryListeners.values()));
277 }
278
279 protected Map<String, TrustedChecksumsSource> getTrustedChecksumsSources(
280 FileProcessor fileProcessor,
281 LocalPathComposer localPathComposer,
282 RepositorySystemLifecycle repositorySystemLifecycle) {
283 HashMap<String, TrustedChecksumsSource> result = new HashMap<>();
284 result.put(
285 SparseDirectoryTrustedChecksumsSource.NAME,
286 new SparseDirectoryTrustedChecksumsSource(fileProcessor, localPathComposer));
287 result.put(
288 SummaryFileTrustedChecksumsSource.NAME,
289 new SummaryFileTrustedChecksumsSource(localPathComposer, repositorySystemLifecycle));
290 return result;
291 }
292
293 protected Map<String, ProvidedChecksumsSource> getProvidedChecksumsSources(
294 Map<String, TrustedChecksumsSource> trustedChecksumsSources) {
295 HashMap<String, ProvidedChecksumsSource> result = new HashMap<>();
296 result.put(
297 TrustedToProvidedChecksumsSourceAdapter.NAME,
298 new TrustedToProvidedChecksumsSourceAdapter(trustedChecksumsSources));
299 return result;
300 }
301
302 protected Map<String, ChecksumExtractor> getChecksumExtractors() {
303 HashMap<String, ChecksumExtractor> result = new HashMap<>();
304 result.put(Nexus2ChecksumExtractor.NAME, new Nexus2ChecksumExtractor());
305 result.put(XChecksumChecksumExtractor.NAME, new XChecksumChecksumExtractor());
306 return result;
307 }
308
309 protected Map<String, TransporterFactory> getTransporterFactories(Map<String, ChecksumExtractor> extractors) {
310 HashMap<String, TransporterFactory> result = new HashMap<>();
311 result.put(FileTransporterFactory.NAME, new FileTransporterFactory());
312 result.put(HttpTransporterFactory.NAME, new HttpTransporterFactory(extractors));
313 return result;
314 }
315
316 protected TransporterProvider getTransporterProvider(Map<String, TransporterFactory> transporterFactories) {
317 return new DefaultTransporterProvider(new HashSet<>(transporterFactories.values()));
318 }
319
320 protected BasicRepositoryConnectorFactory getBasicRepositoryConnectorFactory(
321 TransporterProvider transporterProvider,
322 RepositoryLayoutProvider repositoryLayoutProvider,
323 ChecksumPolicyProvider checksumPolicyProvider,
324 FileProcessor fileProcessor,
325 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
326 return new BasicRepositoryConnectorFactory(
327 transporterProvider,
328 repositoryLayoutProvider,
329 checksumPolicyProvider,
330 fileProcessor,
331 providedChecksumsSources);
332 }
333
334 protected Map<String, RepositoryConnectorFactory> getRepositoryConnectorFactories(
335 BasicRepositoryConnectorFactory basicRepositoryConnectorFactory) {
336 HashMap<String, RepositoryConnectorFactory> result = new HashMap<>();
337 result.put(BasicRepositoryConnectorFactory.NAME, basicRepositoryConnectorFactory);
338 return result;
339 }
340
341 protected RepositoryConnectorProvider getRepositoryConnectorProvider(
342 Map<String, RepositoryConnectorFactory> repositoryConnectorFactories,
343 RemoteRepositoryFilterManager remoteRepositoryFilterManager) {
344 return new DefaultRepositoryConnectorProvider(
345 new HashSet<>(repositoryConnectorFactories.values()), remoteRepositoryFilterManager);
346 }
347
348 protected Installer getInstaller(
349 FileProcessor fileProcessor,
350 RepositoryEventDispatcher repositoryEventDispatcher,
351 Map<String, MetadataGeneratorFactory> metadataGeneratorFactories,
352 SyncContextFactory syncContextFactory) {
353 return new DefaultInstaller(
354 fileProcessor,
355 repositoryEventDispatcher,
356 new HashSet<>(metadataGeneratorFactories.values()),
357 syncContextFactory);
358 }
359
360 @SuppressWarnings("checkstyle:parameternumber")
361 protected Deployer getDeployer(
362 FileProcessor fileProcessor,
363 RepositoryEventDispatcher repositoryEventDispatcher,
364 RepositoryConnectorProvider repositoryConnectorProvider,
365 RemoteRepositoryManager remoteRepositoryManager,
366 UpdateCheckManager updateCheckManager,
367 Map<String, MetadataGeneratorFactory> metadataGeneratorFactories,
368 SyncContextFactory syncContextFactory,
369 OfflineController offlineController) {
370 return new DefaultDeployer(
371 fileProcessor,
372 repositoryEventDispatcher,
373 repositoryConnectorProvider,
374 remoteRepositoryManager,
375 updateCheckManager,
376 new HashSet<>(metadataGeneratorFactories.values()),
377 syncContextFactory,
378 offlineController);
379 }
380
381 protected Map<String, DependencyCollectorDelegate> getDependencyCollectorDelegates(
382 RemoteRepositoryManager remoteRepositoryManager,
383 ArtifactDescriptorReader artifactDescriptorReader,
384 VersionRangeResolver versionRangeResolver) {
385 HashMap<String, DependencyCollectorDelegate> result = new HashMap<>();
386 result.put(
387 DfDependencyCollector.NAME,
388 new DfDependencyCollector(remoteRepositoryManager, artifactDescriptorReader, versionRangeResolver));
389 result.put(
390 BfDependencyCollector.NAME,
391 new BfDependencyCollector(remoteRepositoryManager, artifactDescriptorReader, versionRangeResolver));
392 return result;
393 }
394
395 protected DependencyCollector getDependencyCollector(
396 Map<String, DependencyCollectorDelegate> dependencyCollectorDelegates) {
397 return new DefaultDependencyCollector(dependencyCollectorDelegates);
398 }
399
400 protected Map<String, ArtifactResolverPostProcessor> getArtifactResolverPostProcessors(
401 ChecksumAlgorithmFactorySelector checksumAlgorithmFactorySelector,
402 Map<String, TrustedChecksumsSource> trustedChecksumsSources) {
403 HashMap<String, ArtifactResolverPostProcessor> result = new HashMap<>();
404 result.put(
405 TrustedChecksumsArtifactResolverPostProcessor.NAME,
406 new TrustedChecksumsArtifactResolverPostProcessor(
407 checksumAlgorithmFactorySelector, trustedChecksumsSources));
408 return result;
409 }
410
411 @SuppressWarnings("checkstyle:parameternumber")
412 protected ArtifactResolver getArtifactResolver(
413 FileProcessor fileProcessor,
414 RepositoryEventDispatcher repositoryEventDispatcher,
415 VersionResolver versionResolver,
416 UpdateCheckManager updateCheckManager,
417 RepositoryConnectorProvider repositoryConnectorProvider,
418 RemoteRepositoryManager remoteRepositoryManager,
419 SyncContextFactory syncContextFactory,
420 OfflineController offlineController,
421 Map<String, ArtifactResolverPostProcessor> artifactResolverPostProcessors,
422 RemoteRepositoryFilterManager remoteRepositoryFilterManager) {
423 return new DefaultArtifactResolver(
424 fileProcessor,
425 repositoryEventDispatcher,
426 versionResolver,
427 updateCheckManager,
428 repositoryConnectorProvider,
429 remoteRepositoryManager,
430 syncContextFactory,
431 offlineController,
432 artifactResolverPostProcessors,
433 remoteRepositoryFilterManager);
434 }
435
436 protected MetadataResolver getMetadataResolver(
437 RepositoryEventDispatcher repositoryEventDispatcher,
438 UpdateCheckManager updateCheckManager,
439 RepositoryConnectorProvider repositoryConnectorProvider,
440 RemoteRepositoryManager remoteRepositoryManager,
441 SyncContextFactory syncContextFactory,
442 OfflineController offlineController,
443 RemoteRepositoryFilterManager remoteRepositoryFilterManager) {
444 return new DefaultMetadataResolver(
445 repositoryEventDispatcher,
446 updateCheckManager,
447 repositoryConnectorProvider,
448 remoteRepositoryManager,
449 syncContextFactory,
450 offlineController,
451 remoteRepositoryFilterManager);
452 }
453
454
455
456 protected Map<String, MetadataGeneratorFactory> getMetadataGeneratorFactories() {
457
458 HashMap<String, MetadataGeneratorFactory> result = new HashMap<>();
459
460 result.put("plugins", new PluginsMetadataGeneratorFactory());
461 result.put("versions", new VersionsMetadataGeneratorFactory());
462 result.put("snapshot", new SnapshotMetadataGeneratorFactory());
463 return result;
464 }
465
466 protected ArtifactDescriptorReader getArtifactDescriptorReader(
467 RemoteRepositoryManager remoteRepositoryManager,
468 VersionResolver versionResolver,
469 VersionRangeResolver versionRangeResolver,
470 ArtifactResolver artifactResolver,
471 ModelBuilder modelBuilder,
472 RepositoryEventDispatcher repositoryEventDispatcher,
473 ModelCacheFactory modelCacheFactory) {
474
475 DefaultArtifactDescriptorReader result = new DefaultArtifactDescriptorReader();
476 result.setRemoteRepositoryManager(remoteRepositoryManager);
477 result.setVersionResolver(versionResolver);
478 result.setVersionRangeResolver(versionRangeResolver);
479 result.setArtifactResolver(artifactResolver);
480 result.setModelBuilder(modelBuilder);
481 result.setRepositoryEventDispatcher(repositoryEventDispatcher);
482 result.setModelCacheFactory(modelCacheFactory);
483 return result;
484 }
485
486 protected VersionResolver getVersionResolver(
487 MetadataResolver metadataResolver,
488 SyncContextFactory syncContextFactory,
489 RepositoryEventDispatcher repositoryEventDispatcher) {
490
491 DefaultVersionResolver result = new DefaultVersionResolver();
492 result.setMetadataResolver(metadataResolver);
493 result.setSyncContextFactory(syncContextFactory);
494 result.setRepositoryEventDispatcher(repositoryEventDispatcher);
495 return result;
496 }
497
498 protected VersionRangeResolver getVersionRangeResolver(
499 MetadataResolver metadataResolver,
500 SyncContextFactory syncContextFactory,
501 RepositoryEventDispatcher repositoryEventDispatcher) {
502
503 DefaultVersionRangeResolver result = new DefaultVersionRangeResolver();
504 result.setMetadataResolver(metadataResolver);
505 result.setSyncContextFactory(syncContextFactory);
506 result.setRepositoryEventDispatcher(repositoryEventDispatcher);
507 return result;
508 }
509
510 protected ModelBuilder getModelBuilder() {
511
512 return new DefaultModelBuilderFactory().newInstance();
513 }
514
515 protected ModelCacheFactory getModelCacheFactory() {
516
517 return new DefaultModelCacheFactory();
518 }
519
520 @Override
521 public RepositorySystem get() {
522 FileProcessor fileProcessor = getFileProcessor();
523 TrackingFileManager trackingFileManager = getTrackingFileManager();
524 LocalPathComposer localPathComposer = getLocalPathComposer();
525 LocalPathPrefixComposerFactory localPathPrefixComposerFactory = getLocalPathPrefixComposerFactory();
526 RepositorySystemLifecycle repositorySystemLifecycle = getRepositorySystemLifecycle();
527 OfflineController offlineController = getOfflineController();
528 UpdatePolicyAnalyzer updatePolicyAnalyzer = getUpdatePolicyAnalyzer();
529 ChecksumPolicyProvider checksumPolicyProvider = getChecksumPolicyProvider();
530
531 UpdateCheckManager updateCheckManager = getUpdateCheckManager(trackingFileManager, updatePolicyAnalyzer);
532
533 Map<String, NamedLockFactory> namedLockFactories = getNamedLockFactories();
534 Map<String, NameMapper> nameMappers = getNameMappers();
535 NamedLockFactoryAdapterFactory namedLockFactoryAdapterFactory =
536 getNamedLockFactoryAdapterFactory(namedLockFactories, nameMappers, repositorySystemLifecycle);
537 SyncContextFactory syncContextFactory = getSyncContextFactory(namedLockFactoryAdapterFactory);
538
539 Map<String, ChecksumAlgorithmFactory> checksumAlgorithmFactories = getChecksumAlgorithmFactories();
540 ChecksumAlgorithmFactorySelector checksumAlgorithmFactorySelector =
541 getChecksumAlgorithmFactorySelector(checksumAlgorithmFactories);
542
543 Map<String, RepositoryLayoutFactory> repositoryLayoutFactories =
544 getRepositoryLayoutFactories(checksumAlgorithmFactorySelector);
545 RepositoryLayoutProvider repositoryLayoutProvider = getRepositoryLayoutProvider(repositoryLayoutFactories);
546
547 LocalRepositoryProvider localRepositoryProvider =
548 getLocalRepositoryProvider(localPathComposer, trackingFileManager, localPathPrefixComposerFactory);
549
550 RemoteRepositoryManager remoteRepositoryManager =
551 getRemoteRepositoryManager(updatePolicyAnalyzer, checksumPolicyProvider);
552 Map<String, RemoteRepositoryFilterSource> remoteRepositoryFilterSources =
553 getRemoteRepositoryFilterSources(repositorySystemLifecycle, repositoryLayoutProvider);
554 RemoteRepositoryFilterManager remoteRepositoryFilterManager =
555 getRemoteRepositoryFilterManager(remoteRepositoryFilterSources);
556
557 Map<String, RepositoryListener> repositoryListeners = getRepositoryListeners();
558 RepositoryEventDispatcher repositoryEventDispatcher = getRepositoryEventDispatcher(repositoryListeners);
559
560 Map<String, TrustedChecksumsSource> trustedChecksumsSources =
561 getTrustedChecksumsSources(fileProcessor, localPathComposer, repositorySystemLifecycle);
562 Map<String, ProvidedChecksumsSource> providedChecksumsSources =
563 getProvidedChecksumsSources(trustedChecksumsSources);
564
565 Map<String, ChecksumExtractor> checksumExtractors = getChecksumExtractors();
566 Map<String, TransporterFactory> transporterFactories = getTransporterFactories(checksumExtractors);
567 TransporterProvider transporterProvider = getTransporterProvider(transporterFactories);
568
569 BasicRepositoryConnectorFactory basic = getBasicRepositoryConnectorFactory(
570 transporterProvider,
571 repositoryLayoutProvider,
572 checksumPolicyProvider,
573 fileProcessor,
574 providedChecksumsSources);
575 Map<String, RepositoryConnectorFactory> repositoryConnectorFactories = getRepositoryConnectorFactories(basic);
576 RepositoryConnectorProvider repositoryConnectorProvider =
577 getRepositoryConnectorProvider(repositoryConnectorFactories, remoteRepositoryFilterManager);
578
579 Map<String, MetadataGeneratorFactory> metadataGeneratorFactories = getMetadataGeneratorFactories();
580
581 Installer installer =
582 getInstaller(fileProcessor, repositoryEventDispatcher, metadataGeneratorFactories, syncContextFactory);
583 Deployer deployer = getDeployer(
584 fileProcessor,
585 repositoryEventDispatcher,
586 repositoryConnectorProvider,
587 remoteRepositoryManager,
588 updateCheckManager,
589 metadataGeneratorFactories,
590 syncContextFactory,
591 offlineController);
592
593 MetadataResolver metadataResolver = getMetadataResolver(
594 repositoryEventDispatcher,
595 updateCheckManager,
596 repositoryConnectorProvider,
597 remoteRepositoryManager,
598 syncContextFactory,
599 offlineController,
600 remoteRepositoryFilterManager);
601
602 VersionResolver versionResolver =
603 getVersionResolver(metadataResolver, syncContextFactory, repositoryEventDispatcher);
604 VersionRangeResolver versionRangeResolver =
605 getVersionRangeResolver(metadataResolver, syncContextFactory, repositoryEventDispatcher);
606
607 Map<String, ArtifactResolverPostProcessor> artifactResolverPostProcessors =
608 getArtifactResolverPostProcessors(checksumAlgorithmFactorySelector, trustedChecksumsSources);
609 ArtifactResolver artifactResolver = getArtifactResolver(
610 fileProcessor,
611 repositoryEventDispatcher,
612 versionResolver,
613 updateCheckManager,
614 repositoryConnectorProvider,
615 remoteRepositoryManager,
616 syncContextFactory,
617 offlineController,
618 artifactResolverPostProcessors,
619 remoteRepositoryFilterManager);
620
621 ModelBuilder modelBuilder = getModelBuilder();
622 ModelCacheFactory modelCacheFactory = getModelCacheFactory();
623
624 ArtifactDescriptorReader artifactDescriptorReader = getArtifactDescriptorReader(
625 remoteRepositoryManager,
626 versionResolver,
627 versionRangeResolver,
628 artifactResolver,
629 modelBuilder,
630 repositoryEventDispatcher,
631 modelCacheFactory);
632
633 Map<String, DependencyCollectorDelegate> dependencyCollectorDelegates = getDependencyCollectorDelegates(
634 remoteRepositoryManager, artifactDescriptorReader, versionRangeResolver);
635 DependencyCollector dependencyCollector = getDependencyCollector(dependencyCollectorDelegates);
636
637 return new DefaultRepositorySystem(
638 versionResolver,
639 versionRangeResolver,
640 artifactResolver,
641 metadataResolver,
642 artifactDescriptorReader,
643 dependencyCollector,
644 installer,
645 deployer,
646 localRepositoryProvider,
647 syncContextFactory,
648 remoteRepositoryManager,
649 repositorySystemLifecycle);
650 }
651 }