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