1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.impl.standalone;
20
21 import java.util.List;
22 import java.util.Map;
23
24 import org.apache.maven.api.annotations.Nullable;
25 import org.apache.maven.api.di.Named;
26 import org.apache.maven.api.di.Provides;
27 import org.apache.maven.impl.resolver.validator.MavenValidatorFactory;
28 import org.eclipse.aether.RepositoryListener;
29 import org.eclipse.aether.RepositorySystem;
30 import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
31 import org.eclipse.aether.impl.ArtifactDescriptorReader;
32 import org.eclipse.aether.impl.ArtifactResolver;
33 import org.eclipse.aether.impl.DependencyCollector;
34 import org.eclipse.aether.impl.Deployer;
35 import org.eclipse.aether.impl.Installer;
36 import org.eclipse.aether.impl.LocalRepositoryProvider;
37 import org.eclipse.aether.impl.MetadataGeneratorFactory;
38 import org.eclipse.aether.impl.MetadataResolver;
39 import org.eclipse.aether.impl.OfflineController;
40 import org.eclipse.aether.impl.RemoteRepositoryFilterManager;
41 import org.eclipse.aether.impl.RemoteRepositoryManager;
42 import org.eclipse.aether.impl.RepositoryConnectorProvider;
43 import org.eclipse.aether.impl.RepositoryEventDispatcher;
44 import org.eclipse.aether.impl.RepositorySystemLifecycle;
45 import org.eclipse.aether.impl.RepositorySystemValidator;
46 import org.eclipse.aether.impl.UpdateCheckManager;
47 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
48 import org.eclipse.aether.impl.VersionRangeResolver;
49 import org.eclipse.aether.impl.VersionResolver;
50 import org.eclipse.aether.internal.impl.DefaultArtifactPredicateFactory;
51 import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
52 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
53 import org.eclipse.aether.internal.impl.DefaultChecksumProcessor;
54 import org.eclipse.aether.internal.impl.DefaultDeployer;
55 import org.eclipse.aether.internal.impl.DefaultInstaller;
56 import org.eclipse.aether.internal.impl.DefaultLocalPathComposer;
57 import org.eclipse.aether.internal.impl.DefaultLocalPathPrefixComposerFactory;
58 import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
59 import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
60 import org.eclipse.aether.internal.impl.DefaultOfflineController;
61 import org.eclipse.aether.internal.impl.DefaultPathProcessor;
62 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
63 import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
64 import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
65 import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
66 import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
67 import org.eclipse.aether.internal.impl.DefaultRepositorySystemLifecycle;
68 import org.eclipse.aether.internal.impl.DefaultRepositorySystemValidator;
69 import org.eclipse.aether.internal.impl.DefaultTrackingFileManager;
70 import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
71 import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
72 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
73 import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
74 import org.eclipse.aether.internal.impl.LocalPathComposer;
75 import org.eclipse.aether.internal.impl.LocalPathPrefixComposerFactory;
76 import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
77 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
78 import org.eclipse.aether.internal.impl.TrackingFileManager;
79 import org.eclipse.aether.internal.impl.checksum.DefaultChecksumAlgorithmFactorySelector;
80 import org.eclipse.aether.internal.impl.checksum.Md5ChecksumAlgorithmFactory;
81 import org.eclipse.aether.internal.impl.checksum.Sha1ChecksumAlgorithmFactory;
82 import org.eclipse.aether.internal.impl.checksum.Sha256ChecksumAlgorithmFactory;
83 import org.eclipse.aether.internal.impl.checksum.Sha512ChecksumAlgorithmFactory;
84 import org.eclipse.aether.internal.impl.checksum.SparseDirectoryTrustedChecksumsSource;
85 import org.eclipse.aether.internal.impl.checksum.SummaryFileTrustedChecksumsSource;
86 import org.eclipse.aether.internal.impl.checksum.TrustedToProvidedChecksumsSourceAdapter;
87 import org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector;
88 import org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate;
89 import org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector;
90 import org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector;
91 import org.eclipse.aether.internal.impl.filter.DefaultRemoteRepositoryFilterManager;
92 import org.eclipse.aether.internal.impl.filter.FilteringPipelineRepositoryConnectorFactory;
93 import org.eclipse.aether.internal.impl.filter.GroupIdRemoteRepositoryFilterSource;
94 import org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource;
95 import org.eclipse.aether.internal.impl.offline.OfflinePipelineRepositoryConnectorFactory;
96 import org.eclipse.aether.internal.impl.synccontext.DefaultSyncContextFactory;
97 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
98 import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
99 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactory;
100 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl;
101 import org.eclipse.aether.internal.impl.transport.http.DefaultChecksumExtractor;
102 import org.eclipse.aether.internal.impl.transport.http.Nx2ChecksumExtractor;
103 import org.eclipse.aether.internal.impl.transport.http.XChecksumExtractor;
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.artifact.ArtifactPredicateFactory;
110 import org.eclipse.aether.spi.artifact.decorator.ArtifactDecoratorFactory;
111 import org.eclipse.aether.spi.artifact.generator.ArtifactGeneratorFactory;
112 import org.eclipse.aether.spi.checksums.ProvidedChecksumsSource;
113 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
114 import org.eclipse.aether.spi.connector.PipelineRepositoryConnectorFactory;
115 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
116 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory;
117 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactorySelector;
118 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
119 import org.eclipse.aether.spi.connector.filter.RemoteRepositoryFilterSource;
120 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutFactory;
121 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
122 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
123 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
124 import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractor;
125 import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractorStrategy;
126 import org.eclipse.aether.spi.io.ChecksumProcessor;
127 import org.eclipse.aether.spi.io.PathProcessor;
128 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
129 import org.eclipse.aether.spi.resolution.ArtifactResolverPostProcessor;
130 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
131 import org.eclipse.aether.spi.validator.ValidatorFactory;
132
133
134
135
136
137
138 @SuppressWarnings({"unused", "checkstyle:ParameterNumber"})
139 public class RepositorySystemSupplier {
140
141 @Provides
142 static MetadataResolver newMetadataResolver(
143 RepositoryEventDispatcher repositoryEventDispatcher,
144 UpdateCheckManager updateCheckManager,
145 RepositoryConnectorProvider repositoryConnectorProvider,
146 RemoteRepositoryManager remoteRepositoryManager,
147 SyncContextFactory syncContextFactory,
148 OfflineController offlineController,
149 RemoteRepositoryFilterManager remoteRepositoryFilterManager,
150 PathProcessor pathProcessor) {
151 return new DefaultMetadataResolver(
152 repositoryEventDispatcher,
153 updateCheckManager,
154 repositoryConnectorProvider,
155 remoteRepositoryManager,
156 syncContextFactory,
157 offlineController,
158 remoteRepositoryFilterManager,
159 pathProcessor);
160 }
161
162 @Provides
163 static RepositoryEventDispatcher newRepositoryEventDispatcher(@Nullable Map<String, RepositoryListener> listeners) {
164 return new DefaultRepositoryEventDispatcher(listeners != null ? listeners : Map.of());
165 }
166
167 @Provides
168 static UpdateCheckManager newUpdateCheckManager(
169 TrackingFileManager trackingFileManager,
170 UpdatePolicyAnalyzer updatePolicyAnalyzer,
171 PathProcessor pathProcessor) {
172 return new DefaultUpdateCheckManager(trackingFileManager, updatePolicyAnalyzer, pathProcessor);
173 }
174
175 @Provides
176 static TrackingFileManager newTrackingFileManager() {
177 return new DefaultTrackingFileManager();
178 }
179
180 @Provides
181 static UpdatePolicyAnalyzer newUpdatePolicyAnalyzer() {
182 return new DefaultUpdatePolicyAnalyzer();
183 }
184
185 @Provides
186 static RepositoryConnectorProvider newRepositoryConnectorProvider(
187 Map<String, RepositoryConnectorFactory> connectorFactories,
188 Map<String, PipelineRepositoryConnectorFactory> pipelineConnectorFactories) {
189 return new DefaultRepositoryConnectorProvider(connectorFactories, pipelineConnectorFactories);
190 }
191
192 @Named("basic")
193 @Provides
194 static BasicRepositoryConnectorFactory newBasicRepositoryConnectorFactory(
195 TransporterProvider transporterProvider,
196 RepositoryLayoutProvider layoutProvider,
197 ChecksumPolicyProvider checksumPolicyProvider,
198 PathProcessor pathProcessor,
199 ChecksumProcessor checksumProcessor,
200 Map<String, ProvidedChecksumsSource> providedChecksumsSources) {
201 return new BasicRepositoryConnectorFactory(
202 transporterProvider,
203 layoutProvider,
204 checksumPolicyProvider,
205 pathProcessor,
206 checksumProcessor,
207 providedChecksumsSources);
208 }
209
210 @Named(OfflinePipelineRepositoryConnectorFactory.NAME)
211 @Provides
212 static OfflinePipelineRepositoryConnectorFactory newOfflinePipelineConnectorFactory(
213 OfflineController offlineController) {
214 return new OfflinePipelineRepositoryConnectorFactory(offlineController);
215 }
216
217 @Named(FilteringPipelineRepositoryConnectorFactory.NAME)
218 @Provides
219 static FilteringPipelineRepositoryConnectorFactory newFilteringPipelineConnectorFactory(
220 RemoteRepositoryFilterManager remoteRepositoryFilterManager) {
221 return new FilteringPipelineRepositoryConnectorFactory(remoteRepositoryFilterManager);
222 }
223
224 @Provides
225 static RepositoryLayoutProvider newRepositoryLayoutProvider(Map<String, RepositoryLayoutFactory> layoutFactories) {
226 return new DefaultRepositoryLayoutProvider(layoutFactories);
227 }
228
229 @Provides
230 @Named(Maven2RepositoryLayoutFactory.NAME)
231 static Maven2RepositoryLayoutFactory newMaven2RepositoryLayoutFactory(
232 ChecksumAlgorithmFactorySelector checksumAlgorithmFactorySelector,
233 ArtifactPredicateFactory artifactPredicateFactory) {
234 return new Maven2RepositoryLayoutFactory(checksumAlgorithmFactorySelector, artifactPredicateFactory);
235 }
236
237 @Provides
238 static SyncContextFactory newSyncContextFactory(NamedLockFactoryAdapterFactory namedLockFactoryAdapterFactory) {
239 return new DefaultSyncContextFactory(namedLockFactoryAdapterFactory);
240 }
241
242 @Provides
243 static OfflineController newOfflineController() {
244 return new DefaultOfflineController();
245 }
246
247 @Provides
248 static RemoteRepositoryFilterManager newRemoteRepositoryFilterManager(
249 Map<String, RemoteRepositoryFilterSource> sources) {
250 return new DefaultRemoteRepositoryFilterManager(sources);
251 }
252
253 @Provides
254 @Named(GroupIdRemoteRepositoryFilterSource.NAME)
255 static GroupIdRemoteRepositoryFilterSource newGroupIdRemoteRepositoryFilterSource(
256 RepositorySystemLifecycle repositorySystemLifecycle, PathProcessor pathProcessor) {
257 return new GroupIdRemoteRepositoryFilterSource(repositorySystemLifecycle, pathProcessor);
258 }
259
260 @Provides
261 @Named(PrefixesRemoteRepositoryFilterSource.NAME)
262 static PrefixesRemoteRepositoryFilterSource newPrefixesRemoteRepositoryFilterSource(
263 MetadataResolver metadataResolver,
264 RemoteRepositoryManager remoteRepositoryManager,
265 RepositoryLayoutProvider repositoryLayoutProvider) {
266 return new PrefixesRemoteRepositoryFilterSource(
267 () -> metadataResolver, () -> remoteRepositoryManager, repositoryLayoutProvider);
268 }
269
270 @Provides
271 static PathProcessor newPathProcessor() {
272 return new DefaultPathProcessor();
273 }
274
275 @Provides
276 static List<ValidatorFactory> newValidatorFactories() {
277 return List.of(new MavenValidatorFactory());
278 }
279
280 @Provides
281 static RepositorySystemValidator newRepositorySystemValidator(List<ValidatorFactory> validatorFactories) {
282 return new DefaultRepositorySystemValidator(validatorFactories);
283 }
284
285 @Provides
286 static RepositorySystem newRepositorySystem(
287 VersionResolver versionResolver,
288 VersionRangeResolver versionRangeResolver,
289 ArtifactResolver artifactResolver,
290 MetadataResolver metadataResolver,
291 ArtifactDescriptorReader artifactDescriptorReader,
292 DependencyCollector dependencyCollector,
293 Installer installer,
294 Deployer deployer,
295 LocalRepositoryProvider localRepositoryProvider,
296 SyncContextFactory syncContextFactory,
297 RemoteRepositoryManager remoteRepositoryManager,
298 RepositorySystemLifecycle repositorySystemLifecycle,
299 @Nullable Map<String, ArtifactDecoratorFactory> artifactDecoratorFactories,
300 RepositorySystemValidator repositorySystemValidator) {
301 return new DefaultRepositorySystem(
302 versionResolver,
303 versionRangeResolver,
304 artifactResolver,
305 metadataResolver,
306 artifactDescriptorReader,
307 dependencyCollector,
308 installer,
309 deployer,
310 localRepositoryProvider,
311 syncContextFactory,
312 remoteRepositoryManager,
313 repositorySystemLifecycle,
314 artifactDecoratorFactories != null ? artifactDecoratorFactories : Map.of(),
315 repositorySystemValidator);
316 }
317
318 @Provides
319 static RemoteRepositoryManager newRemoteRepositoryManager(
320 UpdatePolicyAnalyzer updatePolicyAnalyzer, ChecksumPolicyProvider checksumPolicyProvider) {
321 return new DefaultRemoteRepositoryManager(updatePolicyAnalyzer, checksumPolicyProvider);
322 }
323
324 @Provides
325 static ChecksumPolicyProvider newChecksumPolicyProvider() {
326 return new DefaultChecksumPolicyProvider();
327 }
328
329 @Provides
330 static NamedLockFactoryAdapterFactory newNamedLockFactoryAdapterFactory(
331 Map<String, NamedLockFactory> factories,
332 Map<String, NameMapper> nameMappers,
333 RepositorySystemLifecycle lifecycle) {
334 return new NamedLockFactoryAdapterFactoryImpl(factories, nameMappers, lifecycle);
335 }
336
337 @Provides
338 @Named(FileLockNamedLockFactory.NAME)
339 static FileLockNamedLockFactory newFileLockNamedLockFactory() {
340 return new FileLockNamedLockFactory();
341 }
342
343 @Provides
344 @Named(LocalReadWriteLockNamedLockFactory.NAME)
345 static LocalReadWriteLockNamedLockFactory newLocalReadWriteLockNamedLockFactory() {
346 return new LocalReadWriteLockNamedLockFactory();
347 }
348
349 @Provides
350 @Named(LocalSemaphoreNamedLockFactory.NAME)
351 static LocalSemaphoreNamedLockFactory newLocalSemaphoreNamedLockFactory() {
352 return new LocalSemaphoreNamedLockFactory();
353 }
354
355 @Provides
356 @Named(NoopNamedLockFactory.NAME)
357 static NoopNamedLockFactory newNoopNamedLockFactory() {
358 return new NoopNamedLockFactory();
359 }
360
361 @Provides
362 @Named(NameMappers.STATIC_NAME)
363 static NameMapper staticNameMapper() {
364 return NameMappers.staticNameMapper();
365 }
366
367 @Provides
368 @Named(NameMappers.GAV_NAME)
369 static NameMapper gavNameMapper() {
370 return NameMappers.gavNameMapper();
371 }
372
373 @Provides
374 @Named(NameMappers.DISCRIMINATING_NAME)
375 static NameMapper discriminatingNameMapper() {
376 return NameMappers.discriminatingNameMapper();
377 }
378
379 @Provides
380 @Named(NameMappers.FILE_GAV_NAME)
381 static NameMapper fileGavNameMapper() {
382 return NameMappers.fileGavNameMapper();
383 }
384
385 @Provides
386 @Named(NameMappers.FILE_HGAV_NAME)
387 static NameMapper fileHashingGavNameMapper() {
388 return NameMappers.fileHashingGavNameMapper();
389 }
390
391 @Provides
392 static RepositorySystemLifecycle newRepositorySystemLifecycle() {
393 return new DefaultRepositorySystemLifecycle();
394 }
395
396 @Provides
397 static ArtifactResolver newArtifactResolver(
398 PathProcessor pathProcessor,
399 RepositoryEventDispatcher repositoryEventDispatcher,
400 VersionResolver versionResolver,
401 UpdateCheckManager updateCheckManager,
402 RepositoryConnectorProvider repositoryConnectorProvider,
403 RemoteRepositoryManager remoteRepositoryManager,
404 SyncContextFactory syncContextFactory,
405 OfflineController offlineController,
406 Map<String, ArtifactResolverPostProcessor> artifactResolverPostProcessors,
407 RemoteRepositoryFilterManager remoteRepositoryFilterManager) {
408 return new DefaultArtifactResolver(
409 pathProcessor,
410 repositoryEventDispatcher,
411 versionResolver,
412 updateCheckManager,
413 repositoryConnectorProvider,
414 remoteRepositoryManager,
415 syncContextFactory,
416 offlineController,
417 artifactResolverPostProcessors,
418 remoteRepositoryFilterManager);
419 }
420
421 @Provides
422 static DependencyCollector newDependencyCollector(Map<String, DependencyCollectorDelegate> delegates) {
423 return new DefaultDependencyCollector(delegates);
424 }
425
426 @Provides
427 @Named(BfDependencyCollector.NAME)
428 static BfDependencyCollector newBfDependencyCollector(
429 RemoteRepositoryManager remoteRepositoryManager,
430 ArtifactDescriptorReader artifactDescriptorReader,
431 VersionRangeResolver versionRangeResolver,
432 @Nullable Map<String, ArtifactDecoratorFactory> artifactDecoratorFactories) {
433 return new BfDependencyCollector(
434 remoteRepositoryManager,
435 artifactDescriptorReader,
436 versionRangeResolver,
437 artifactDecoratorFactories != null ? artifactDecoratorFactories : Map.of());
438 }
439
440 @Provides
441 @Named(DfDependencyCollector.NAME)
442 static DfDependencyCollector newDfDependencyCollector(
443 RemoteRepositoryManager remoteRepositoryManager,
444 ArtifactDescriptorReader artifactDescriptorReader,
445 VersionRangeResolver versionRangeResolver,
446 @Nullable Map<String, ArtifactDecoratorFactory> artifactDecoratorFactories) {
447 return new DfDependencyCollector(
448 remoteRepositoryManager,
449 artifactDescriptorReader,
450 versionRangeResolver,
451 artifactDecoratorFactories != null ? artifactDecoratorFactories : Map.of());
452 }
453
454 @Provides
455 static Installer newInstaller(
456 PathProcessor pathProcessor,
457 RepositoryEventDispatcher repositoryEventDispatcher,
458 @Nullable Map<String, ArtifactGeneratorFactory> artifactFactories,
459 Map<String, MetadataGeneratorFactory> metadataFactories,
460 SyncContextFactory syncContextFactory) {
461 return new DefaultInstaller(
462 pathProcessor,
463 repositoryEventDispatcher,
464 artifactFactories != null ? artifactFactories : Map.of(),
465 metadataFactories,
466 Map.of(),
467 syncContextFactory);
468 }
469
470 @Provides
471 static Deployer newDeployer(
472 PathProcessor pathProcessor,
473 RepositoryEventDispatcher repositoryEventDispatcher,
474 RepositoryConnectorProvider repositoryConnectorProvider,
475 RemoteRepositoryManager remoteRepositoryManager,
476 UpdateCheckManager updateCheckManager,
477 @Nullable Map<String, ArtifactGeneratorFactory> artifactFactories,
478 Map<String, MetadataGeneratorFactory> metadataFactories,
479 SyncContextFactory syncContextFactory,
480 OfflineController offlineController) {
481 return new DefaultDeployer(
482 pathProcessor,
483 repositoryEventDispatcher,
484 repositoryConnectorProvider,
485 remoteRepositoryManager,
486 updateCheckManager,
487 artifactFactories != null ? artifactFactories : Map.of(),
488 metadataFactories,
489 Map.of(),
490 syncContextFactory,
491 offlineController);
492 }
493
494 @Provides
495 static LocalRepositoryProvider newLocalRepositoryProvider(
496 Map<String, LocalRepositoryManagerFactory> localRepositoryManagerFactories) {
497 return new DefaultLocalRepositoryProvider(localRepositoryManagerFactories);
498 }
499
500 @Provides
501 @Named(EnhancedLocalRepositoryManagerFactory.NAME)
502 static EnhancedLocalRepositoryManagerFactory newEnhancedLocalRepositoryManagerFactory(
503 LocalPathComposer localPathComposer,
504 TrackingFileManager trackingFileManager,
505 LocalPathPrefixComposerFactory localPathPrefixComposerFactory) {
506 return new EnhancedLocalRepositoryManagerFactory(
507 localPathComposer, trackingFileManager, localPathPrefixComposerFactory);
508 }
509
510 @Provides
511 @Named(SimpleLocalRepositoryManagerFactory.NAME)
512 static SimpleLocalRepositoryManagerFactory newSimpleLocalRepositoryManagerFactory(
513 LocalPathComposer localPathComposer) {
514 return new SimpleLocalRepositoryManagerFactory(localPathComposer);
515 }
516
517 @Provides
518 static LocalPathComposer newLocalPathComposer() {
519 return new DefaultLocalPathComposer();
520 }
521
522 @Provides
523 static LocalPathPrefixComposerFactory newLocalPathPrefixComposerFactory() {
524 return new DefaultLocalPathPrefixComposerFactory();
525 }
526
527 @Provides
528 static TransporterProvider newTransportProvider(@Nullable Map<String, TransporterFactory> transporterFactories) {
529 return new DefaultTransporterProvider(transporterFactories != null ? transporterFactories : Map.of());
530 }
531
532 @Provides
533 static ChecksumProcessor newChecksumProcessor(PathProcessor pathProcessor) {
534 return new DefaultChecksumProcessor(pathProcessor);
535 }
536
537 @Provides
538 static ChecksumExtractor newChecksumExtractor(Map<String, ChecksumExtractorStrategy> strategies) {
539 return new DefaultChecksumExtractor(strategies);
540 }
541
542 @Provides
543 @Named(Nx2ChecksumExtractor.NAME)
544 static Nx2ChecksumExtractor newNx2ChecksumExtractor() {
545 return new Nx2ChecksumExtractor();
546 }
547
548 @Provides
549 @Named(XChecksumExtractor.NAME)
550 static XChecksumExtractor newXChecksumExtractor() {
551 return new XChecksumExtractor();
552 }
553
554 @Provides
555 @Named(TrustedToProvidedChecksumsSourceAdapter.NAME)
556 static TrustedToProvidedChecksumsSourceAdapter newTrustedToProvidedChecksumsSourceAdapter(
557 Map<String, TrustedChecksumsSource> trustedChecksumsSources) {
558 return new TrustedToProvidedChecksumsSourceAdapter(trustedChecksumsSources);
559 }
560
561 @Provides
562 @Named(SparseDirectoryTrustedChecksumsSource.NAME)
563 static SparseDirectoryTrustedChecksumsSource newSparseDirectoryTrustedChecksumsSource(
564 ChecksumProcessor checksumProcessor, LocalPathComposer localPathComposer) {
565 return new SparseDirectoryTrustedChecksumsSource(checksumProcessor, localPathComposer);
566 }
567
568 @Provides
569 @Named(SummaryFileTrustedChecksumsSource.NAME)
570 static SummaryFileTrustedChecksumsSource newSummaryFileTrustedChecksumsSource(
571 LocalPathComposer localPathComposer,
572 RepositorySystemLifecycle repositorySystemLifecycle,
573 PathProcessor pathProcessor) {
574 return new SummaryFileTrustedChecksumsSource(localPathComposer, repositorySystemLifecycle, pathProcessor);
575 }
576
577 @Provides
578 static ChecksumAlgorithmFactorySelector newChecksumAlgorithmFactorySelector(
579 Map<String, ChecksumAlgorithmFactory> factories) {
580 return new DefaultChecksumAlgorithmFactorySelector(factories);
581 }
582
583 @Provides
584 @Named(Md5ChecksumAlgorithmFactory.NAME)
585 static Md5ChecksumAlgorithmFactory newMd5ChecksumAlgorithmFactory() {
586 return new Md5ChecksumAlgorithmFactory();
587 }
588
589 @Provides
590 @Named(Sha1ChecksumAlgorithmFactory.NAME)
591 static Sha1ChecksumAlgorithmFactory newSh1ChecksumAlgorithmFactory() {
592 return new Sha1ChecksumAlgorithmFactory();
593 }
594
595 @Provides
596 @Named(Sha256ChecksumAlgorithmFactory.NAME)
597 static Sha256ChecksumAlgorithmFactory newSh256ChecksumAlgorithmFactory() {
598 return new Sha256ChecksumAlgorithmFactory();
599 }
600
601 @Provides
602 @Named(Sha512ChecksumAlgorithmFactory.NAME)
603 static Sha512ChecksumAlgorithmFactory newSh512ChecksumAlgorithmFactory() {
604 return new Sha512ChecksumAlgorithmFactory();
605 }
606
607 @Provides
608 static ArtifactPredicateFactory newArtifactPredicateFactory(
609 ChecksumAlgorithmFactorySelector checksumAlgorithmFactorySelector) {
610 return new DefaultArtifactPredicateFactory(checksumAlgorithmFactorySelector);
611 }
612 }