1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.impl.guice;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.HashSet;
27 import java.util.Map;
28 import java.util.Set;
29
30 import com.google.inject.AbstractModule;
31 import com.google.inject.Provides;
32 import com.google.inject.name.Names;
33 import org.eclipse.aether.RepositoryListener;
34 import org.eclipse.aether.RepositorySystem;
35 import org.eclipse.aether.impl.ArtifactResolver;
36 import org.eclipse.aether.impl.DependencyCollector;
37 import org.eclipse.aether.impl.Deployer;
38 import org.eclipse.aether.impl.Installer;
39 import org.eclipse.aether.impl.LocalRepositoryProvider;
40 import org.eclipse.aether.impl.MetadataResolver;
41 import org.eclipse.aether.impl.OfflineController;
42 import org.eclipse.aether.impl.RemoteRepositoryFilterManager;
43 import org.eclipse.aether.impl.RemoteRepositoryManager;
44 import org.eclipse.aether.impl.RepositoryConnectorProvider;
45 import org.eclipse.aether.impl.RepositoryEventDispatcher;
46 import org.eclipse.aether.impl.RepositorySystemLifecycle;
47 import org.eclipse.aether.impl.UpdateCheckManager;
48 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
49 import org.eclipse.aether.internal.impl.DefaultArtifactResolver;
50 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
51 import org.eclipse.aether.internal.impl.DefaultDeployer;
52 import org.eclipse.aether.internal.impl.DefaultFileProcessor;
53 import org.eclipse.aether.internal.impl.DefaultInstaller;
54 import org.eclipse.aether.internal.impl.DefaultLocalPathComposer;
55 import org.eclipse.aether.internal.impl.DefaultLocalPathPrefixComposerFactory;
56 import org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider;
57 import org.eclipse.aether.internal.impl.DefaultMetadataResolver;
58 import org.eclipse.aether.internal.impl.DefaultOfflineController;
59 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
60 import org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider;
61 import org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher;
62 import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
63 import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
64 import org.eclipse.aether.internal.impl.DefaultRepositorySystemLifecycle;
65 import org.eclipse.aether.internal.impl.DefaultTrackingFileManager;
66 import org.eclipse.aether.internal.impl.DefaultTransporterProvider;
67 import org.eclipse.aether.internal.impl.DefaultUpdateCheckManager;
68 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
69 import org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory;
70 import org.eclipse.aether.internal.impl.LocalPathComposer;
71 import org.eclipse.aether.internal.impl.LocalPathPrefixComposerFactory;
72 import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
73 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
74 import org.eclipse.aether.internal.impl.TrackingFileManager;
75 import org.eclipse.aether.internal.impl.checksum.DefaultChecksumAlgorithmFactorySelector;
76 import org.eclipse.aether.internal.impl.checksum.Md5ChecksumAlgorithmFactory;
77 import org.eclipse.aether.internal.impl.checksum.Sha1ChecksumAlgorithmFactory;
78 import org.eclipse.aether.internal.impl.checksum.Sha256ChecksumAlgorithmFactory;
79 import org.eclipse.aether.internal.impl.checksum.Sha512ChecksumAlgorithmFactory;
80 import org.eclipse.aether.internal.impl.checksum.SparseDirectoryTrustedChecksumsSource;
81 import org.eclipse.aether.internal.impl.checksum.SummaryFileTrustedChecksumsSource;
82 import org.eclipse.aether.internal.impl.checksum.TrustedToProvidedChecksumsSourceAdapter;
83 import org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector;
84 import org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate;
85 import org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector;
86 import org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector;
87 import org.eclipse.aether.internal.impl.filter.DefaultRemoteRepositoryFilterManager;
88 import org.eclipse.aether.internal.impl.filter.GroupIdRemoteRepositoryFilterSource;
89 import org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource;
90 import org.eclipse.aether.internal.impl.resolution.TrustedChecksumsArtifactResolverPostProcessor;
91 import org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory;
92 import org.eclipse.aether.internal.impl.synccontext.DefaultSyncContextFactory;
93 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
94 import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
95 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactory;
96 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl;
97 import org.eclipse.aether.internal.impl.synccontext.named.providers.DiscriminatingNameMapperProvider;
98 import org.eclipse.aether.internal.impl.synccontext.named.providers.FileGAECVNameMapperProvider;
99 import org.eclipse.aether.internal.impl.synccontext.named.providers.FileGAVNameMapperProvider;
100 import org.eclipse.aether.internal.impl.synccontext.named.providers.FileHashingGAECVNameMapperProvider;
101 import org.eclipse.aether.internal.impl.synccontext.named.providers.FileHashingGAVNameMapperProvider;
102 import org.eclipse.aether.internal.impl.synccontext.named.providers.GAECVNameMapperProvider;
103 import org.eclipse.aether.internal.impl.synccontext.named.providers.GAVNameMapperProvider;
104 import org.eclipse.aether.internal.impl.synccontext.named.providers.StaticNameMapperProvider;
105 import org.eclipse.aether.named.NamedLockFactory;
106 import org.eclipse.aether.named.providers.FileLockNamedLockFactory;
107 import org.eclipse.aether.named.providers.LocalReadWriteLockNamedLockFactory;
108 import org.eclipse.aether.named.providers.LocalSemaphoreNamedLockFactory;
109 import org.eclipse.aether.named.providers.NoopNamedLockFactory;
110 import org.eclipse.aether.spi.checksums.ProvidedChecksumsSource;
111 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
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.TransporterProvider;
119 import org.eclipse.aether.spi.io.FileProcessor;
120 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
121 import org.eclipse.aether.spi.log.LoggerFactory;
122 import org.eclipse.aether.spi.resolution.ArtifactResolverPostProcessor;
123 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
124 import org.slf4j.ILoggerFactory;
125
126
127
128
129
130
131
132
133
134
135
136
137 @Deprecated
138 public class AetherModule extends AbstractModule {
139
140
141
142
143
144 public AetherModule() {}
145
146
147
148
149
150 @Override
151 protected void configure() {
152 bind(RepositorySystem.class)
153 .to(DefaultRepositorySystem.class)
154 .in(Singleton.class);
155 bind(ArtifactResolver.class)
156 .to(DefaultArtifactResolver.class)
157 .in(Singleton.class);
158
159 bind(DependencyCollector.class)
160 .to(DefaultDependencyCollector.class)
161 .in(Singleton.class);
162 bind(DependencyCollectorDelegate.class)
163 .annotatedWith(Names.named(BfDependencyCollector.NAME))
164 .to(BfDependencyCollector.class)
165 .in(Singleton.class);
166 bind(DependencyCollectorDelegate.class)
167 .annotatedWith(Names.named(DfDependencyCollector.NAME))
168 .to(DfDependencyCollector.class)
169 .in(Singleton.class);
170
171 bind(Deployer.class)
172 .to(DefaultDeployer.class)
173 .in(Singleton.class);
174 bind(Installer.class)
175 .to(DefaultInstaller.class)
176 .in(Singleton.class);
177 bind(MetadataResolver.class)
178 .to(DefaultMetadataResolver.class)
179 .in(Singleton.class);
180 bind(RepositoryLayoutProvider.class)
181 .to(DefaultRepositoryLayoutProvider.class)
182 .in(Singleton.class);
183 bind(RepositoryLayoutFactory.class)
184 .annotatedWith(Names.named("maven2"))
185 .to(Maven2RepositoryLayoutFactory.class)
186 .in(Singleton.class);
187 bind(TransporterProvider.class)
188 .to(DefaultTransporterProvider.class)
189 .in(Singleton.class);
190 bind(ChecksumPolicyProvider.class)
191 .to(DefaultChecksumPolicyProvider.class)
192 .in(Singleton.class);
193 bind(RepositoryConnectorProvider.class)
194 .to(DefaultRepositoryConnectorProvider.class)
195 .in(Singleton.class);
196 bind(RemoteRepositoryManager.class)
197 .to(DefaultRemoteRepositoryManager.class)
198 .in(Singleton.class);
199 bind(UpdateCheckManager.class)
200 .to(DefaultUpdateCheckManager.class)
201 .in(Singleton.class);
202 bind(UpdatePolicyAnalyzer.class)
203 .to(DefaultUpdatePolicyAnalyzer.class)
204 .in(Singleton.class);
205 bind(FileProcessor.class)
206 .to(DefaultFileProcessor.class)
207 .in(Singleton.class);
208 bind(RepositoryEventDispatcher.class)
209 .to(DefaultRepositoryEventDispatcher.class)
210 .in(Singleton.class);
211 bind(OfflineController.class)
212 .to(DefaultOfflineController.class)
213 .in(Singleton.class);
214
215 bind(LocalPathComposer.class).to(DefaultLocalPathComposer.class).in(Singleton.class);
216 bind(LocalPathPrefixComposerFactory.class)
217 .to(DefaultLocalPathPrefixComposerFactory.class)
218 .in(Singleton.class);
219
220 bind(LocalRepositoryProvider.class)
221 .to(DefaultLocalRepositoryProvider.class)
222 .in(Singleton.class);
223 bind(LocalRepositoryManagerFactory.class)
224 .annotatedWith(Names.named("simple"))
225 .to(SimpleLocalRepositoryManagerFactory.class)
226 .in(Singleton.class);
227 bind(LocalRepositoryManagerFactory.class)
228 .annotatedWith(Names.named("enhanced"))
229 .to(EnhancedLocalRepositoryManagerFactory.class)
230 .in(Singleton.class);
231 bind(TrackingFileManager.class).to(DefaultTrackingFileManager.class).in(Singleton.class);
232
233 bind(ProvidedChecksumsSource.class)
234 .annotatedWith(Names.named(TrustedToProvidedChecksumsSourceAdapter.NAME))
235 .to(TrustedToProvidedChecksumsSourceAdapter.class)
236 .in(Singleton.class);
237
238 bind(TrustedChecksumsSource.class)
239 .annotatedWith(Names.named(SparseDirectoryTrustedChecksumsSource.NAME))
240 .to(SparseDirectoryTrustedChecksumsSource.class)
241 .in(Singleton.class);
242 bind(TrustedChecksumsSource.class)
243 .annotatedWith(Names.named(SummaryFileTrustedChecksumsSource.NAME))
244 .to(SummaryFileTrustedChecksumsSource.class)
245 .in(Singleton.class);
246
247 bind(ArtifactResolverPostProcessor.class)
248 .annotatedWith(Names.named(TrustedChecksumsArtifactResolverPostProcessor.NAME))
249 .to(TrustedChecksumsArtifactResolverPostProcessor.class)
250 .in(Singleton.class);
251
252 bind(ChecksumAlgorithmFactory.class)
253 .annotatedWith(Names.named(Md5ChecksumAlgorithmFactory.NAME))
254 .to(Md5ChecksumAlgorithmFactory.class);
255 bind(ChecksumAlgorithmFactory.class)
256 .annotatedWith(Names.named(Sha1ChecksumAlgorithmFactory.NAME))
257 .to(Sha1ChecksumAlgorithmFactory.class);
258 bind(ChecksumAlgorithmFactory.class)
259 .annotatedWith(Names.named(Sha256ChecksumAlgorithmFactory.NAME))
260 .to(Sha256ChecksumAlgorithmFactory.class);
261 bind(ChecksumAlgorithmFactory.class)
262 .annotatedWith(Names.named(Sha512ChecksumAlgorithmFactory.NAME))
263 .to(Sha512ChecksumAlgorithmFactory.class);
264 bind(ChecksumAlgorithmFactorySelector.class)
265 .to(DefaultChecksumAlgorithmFactorySelector.class)
266 .in(Singleton.class);
267
268 bind(RepositorySystemLifecycle.class)
269 .to(DefaultRepositorySystemLifecycle.class)
270 .in(Singleton.class);
271
272 bind(NamedLockFactoryAdapterFactory.class)
273 .to(NamedLockFactoryAdapterFactoryImpl.class)
274 .in(Singleton.class);
275 bind(SyncContextFactory.class).to(DefaultSyncContextFactory.class).in(Singleton.class);
276 bind(org.eclipse.aether.impl.SyncContextFactory.class)
277 .to(org.eclipse.aether.internal.impl.synccontext.legacy.DefaultSyncContextFactory.class)
278 .in(Singleton.class);
279
280 bind(NameMapper.class)
281 .annotatedWith(Names.named(NameMappers.STATIC_NAME))
282 .toProvider(StaticNameMapperProvider.class)
283 .in(Singleton.class);
284 bind(NameMapper.class)
285 .annotatedWith(Names.named(NameMappers.GAV_NAME))
286 .toProvider(GAVNameMapperProvider.class)
287 .in(Singleton.class);
288 bind(NameMapper.class)
289 .annotatedWith(Names.named(NameMappers.GAECV_NAME))
290 .toProvider(GAECVNameMapperProvider.class)
291 .in(Singleton.class);
292 bind(NameMapper.class)
293 .annotatedWith(Names.named(NameMappers.DISCRIMINATING_NAME))
294 .toProvider(DiscriminatingNameMapperProvider.class)
295 .in(Singleton.class);
296 bind(NameMapper.class)
297 .annotatedWith(Names.named(NameMappers.FILE_GAV_NAME))
298 .toProvider(FileGAVNameMapperProvider.class)
299 .in(Singleton.class);
300 bind(NameMapper.class)
301 .annotatedWith(Names.named(NameMappers.FILE_GAECV_NAME))
302 .toProvider(FileGAECVNameMapperProvider.class)
303 .in(Singleton.class);
304 bind(NameMapper.class)
305 .annotatedWith(Names.named(NameMappers.FILE_HGAV_NAME))
306 .toProvider(FileHashingGAVNameMapperProvider.class)
307 .in(Singleton.class);
308 bind(NameMapper.class)
309 .annotatedWith(Names.named(NameMappers.FILE_HGAECV_NAME))
310 .toProvider(FileHashingGAECVNameMapperProvider.class)
311 .in(Singleton.class);
312
313 bind(NamedLockFactory.class)
314 .annotatedWith(Names.named(NoopNamedLockFactory.NAME))
315 .to(NoopNamedLockFactory.class)
316 .in(Singleton.class);
317 bind(NamedLockFactory.class)
318 .annotatedWith(Names.named(LocalReadWriteLockNamedLockFactory.NAME))
319 .to(LocalReadWriteLockNamedLockFactory.class)
320 .in(Singleton.class);
321 bind(NamedLockFactory.class)
322 .annotatedWith(Names.named(LocalSemaphoreNamedLockFactory.NAME))
323 .to(LocalSemaphoreNamedLockFactory.class)
324 .in(Singleton.class);
325 bind(NamedLockFactory.class)
326 .annotatedWith(Names.named(FileLockNamedLockFactory.NAME))
327 .to(FileLockNamedLockFactory.class)
328 .in(Singleton.class);
329
330 bind(RemoteRepositoryFilterManager.class)
331 .to(DefaultRemoteRepositoryFilterManager.class)
332 .in(Singleton.class);
333 bind(RemoteRepositoryFilterSource.class)
334 .annotatedWith(Names.named(GroupIdRemoteRepositoryFilterSource.NAME))
335 .to(GroupIdRemoteRepositoryFilterSource.class)
336 .in(Singleton.class);
337 bind(RemoteRepositoryFilterSource.class)
338 .annotatedWith(Names.named(PrefixesRemoteRepositoryFilterSource.NAME))
339 .to(PrefixesRemoteRepositoryFilterSource.class)
340 .in(Singleton.class);
341
342 install(new Slf4jModule());
343 }
344
345 @Provides
346 @Singleton
347 Map<String, RemoteRepositoryFilterSource> remoteRepositoryFilterSources(
348 @Named(GroupIdRemoteRepositoryFilterSource.NAME) RemoteRepositoryFilterSource groupId,
349 @Named(PrefixesRemoteRepositoryFilterSource.NAME) RemoteRepositoryFilterSource prefixes) {
350 Map<String, RemoteRepositoryFilterSource> result = new HashMap<>();
351 result.put(GroupIdRemoteRepositoryFilterSource.NAME, groupId);
352 result.put(PrefixesRemoteRepositoryFilterSource.NAME, prefixes);
353 return Collections.unmodifiableMap(result);
354 }
355
356 @Provides
357 @Singleton
358 Map<String, ArtifactResolverPostProcessor> artifactResolverProcessors(
359 @Named(TrustedChecksumsArtifactResolverPostProcessor.NAME) ArtifactResolverPostProcessor trustedChecksums) {
360 Map<String, ArtifactResolverPostProcessor> result = new HashMap<>();
361 result.put(TrustedChecksumsArtifactResolverPostProcessor.NAME, trustedChecksums);
362 return Collections.unmodifiableMap(result);
363 }
364
365 @Provides
366 @Singleton
367 Map<String, DependencyCollectorDelegate> dependencyCollectorDelegates(
368 @Named(BfDependencyCollector.NAME) DependencyCollectorDelegate bf,
369 @Named(DfDependencyCollector.NAME) DependencyCollectorDelegate df) {
370 Map<String, DependencyCollectorDelegate> result = new HashMap<>();
371 result.put(BfDependencyCollector.NAME, bf);
372 result.put(DfDependencyCollector.NAME, df);
373 return Collections.unmodifiableMap(result);
374 }
375
376 @Provides
377 @Singleton
378 Map<String, ProvidedChecksumsSource> providedChecksumSources(
379 @Named(TrustedToProvidedChecksumsSourceAdapter.NAME) ProvidedChecksumsSource adapter) {
380 Map<String, ProvidedChecksumsSource> result = new HashMap<>();
381 result.put(TrustedToProvidedChecksumsSourceAdapter.NAME, adapter);
382 return Collections.unmodifiableMap(result);
383 }
384
385 @Provides
386 @Singleton
387 Map<String, TrustedChecksumsSource> trustedChecksumSources(
388 @Named(SparseDirectoryTrustedChecksumsSource.NAME) TrustedChecksumsSource sparse,
389 @Named(SummaryFileTrustedChecksumsSource.NAME) TrustedChecksumsSource compact) {
390 Map<String, TrustedChecksumsSource> result = new HashMap<>();
391 result.put(SparseDirectoryTrustedChecksumsSource.NAME, sparse);
392 result.put(SummaryFileTrustedChecksumsSource.NAME, compact);
393 return Collections.unmodifiableMap(result);
394 }
395
396 @Provides
397 @Singleton
398 Map<String, ChecksumAlgorithmFactory> provideChecksumTypes(
399 @Named(Sha512ChecksumAlgorithmFactory.NAME) ChecksumAlgorithmFactory sha512,
400 @Named(Sha256ChecksumAlgorithmFactory.NAME) ChecksumAlgorithmFactory sha256,
401 @Named(Sha1ChecksumAlgorithmFactory.NAME) ChecksumAlgorithmFactory sha1,
402 @Named(Md5ChecksumAlgorithmFactory.NAME) ChecksumAlgorithmFactory md5) {
403 Map<String, ChecksumAlgorithmFactory> result = new HashMap<>();
404 result.put(Sha512ChecksumAlgorithmFactory.NAME, sha512);
405 result.put(Sha256ChecksumAlgorithmFactory.NAME, sha256);
406 result.put(Sha1ChecksumAlgorithmFactory.NAME, sha1);
407 result.put(Md5ChecksumAlgorithmFactory.NAME, md5);
408 return Collections.unmodifiableMap(result);
409 }
410
411 @SuppressWarnings("checkstyle:parameternumber")
412 @Provides
413 @Singleton
414 Map<String, NameMapper> provideNameMappers(
415 @Named(NameMappers.STATIC_NAME) NameMapper staticNameMapper,
416 @Named(NameMappers.GAV_NAME) NameMapper gavNameMapper,
417 @Named(NameMappers.GAECV_NAME) NameMapper gaecvNameMapper,
418 @Named(NameMappers.DISCRIMINATING_NAME) NameMapper discriminatingNameMapper,
419 @Named(NameMappers.FILE_GAV_NAME) NameMapper fileGavNameMapper,
420 @Named(NameMappers.FILE_GAECV_NAME) NameMapper fileGaecvNameMapper,
421 @Named(NameMappers.FILE_HGAV_NAME) NameMapper fileHashingGavNameMapper,
422 @Named(NameMappers.FILE_HGAECV_NAME) NameMapper fileHashingGaecvNameMapper) {
423 Map<String, NameMapper> result = new HashMap<>();
424 result.put(NameMappers.STATIC_NAME, staticNameMapper);
425 result.put(NameMappers.GAV_NAME, gavNameMapper);
426 result.put(NameMappers.GAECV_NAME, gaecvNameMapper);
427 result.put(NameMappers.DISCRIMINATING_NAME, discriminatingNameMapper);
428 result.put(NameMappers.FILE_GAV_NAME, fileGavNameMapper);
429 result.put(NameMappers.FILE_GAECV_NAME, fileGaecvNameMapper);
430 result.put(NameMappers.FILE_HGAV_NAME, fileHashingGavNameMapper);
431 result.put(NameMappers.FILE_HGAECV_NAME, fileHashingGaecvNameMapper);
432 return Collections.unmodifiableMap(result);
433 }
434
435 @Provides
436 @Singleton
437 Map<String, NamedLockFactory> provideNamedLockFactories(
438 @Named(LocalReadWriteLockNamedLockFactory.NAME) NamedLockFactory localRwLock,
439 @Named(LocalSemaphoreNamedLockFactory.NAME) NamedLockFactory localSemaphore,
440 @Named(FileLockNamedLockFactory.NAME) NamedLockFactory fileLockFactory) {
441 Map<String, NamedLockFactory> result = new HashMap<>();
442 result.put(LocalReadWriteLockNamedLockFactory.NAME, localRwLock);
443 result.put(LocalSemaphoreNamedLockFactory.NAME, localSemaphore);
444 result.put(FileLockNamedLockFactory.NAME, fileLockFactory);
445 return Collections.unmodifiableMap(result);
446 }
447
448 @Provides
449 @Singleton
450 Set<LocalRepositoryManagerFactory> provideLocalRepositoryManagerFactories(
451 @Named("simple") LocalRepositoryManagerFactory simple,
452 @Named("enhanced") LocalRepositoryManagerFactory enhanced) {
453 Set<LocalRepositoryManagerFactory> result = new HashSet<>();
454 result.add(simple);
455 result.add(enhanced);
456 return Collections.unmodifiableSet(result);
457 }
458
459 @Provides
460 @Singleton
461 Set<RepositoryLayoutFactory> provideRepositoryLayoutFactories(@Named("maven2") RepositoryLayoutFactory maven2) {
462 Set<RepositoryLayoutFactory> result = new HashSet<>();
463 result.add(maven2);
464 return Collections.unmodifiableSet(result);
465 }
466
467 @Provides
468 @Singleton
469 Set<RepositoryListener> providesRepositoryListeners() {
470 return Collections.emptySet();
471 }
472
473 private static class Slf4jModule extends AbstractModule {
474
475 @Override
476 protected void configure() {
477 bind(LoggerFactory.class)
478 .to(Slf4jLoggerFactory.class);
479 }
480
481 @Provides
482 @Singleton
483 ILoggerFactory getLoggerFactory() {
484 return org.slf4j.LoggerFactory.getILoggerFactory();
485 }
486 }
487 }