1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.resolver.examples.guice;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.Collections;
25 import java.util.HashSet;
26 import java.util.Map;
27 import java.util.Set;
28
29 import com.google.inject.AbstractModule;
30 import com.google.inject.Provides;
31 import com.google.inject.name.Names;
32 import org.apache.maven.model.building.DefaultModelBuilderFactory;
33 import org.apache.maven.model.building.ModelBuilder;
34 import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
35 import org.apache.maven.repository.internal.DefaultModelCacheFactory;
36 import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
37 import org.apache.maven.repository.internal.DefaultVersionResolver;
38 import org.apache.maven.repository.internal.ModelCacheFactory;
39 import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
40 import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
41 import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
42 import org.eclipse.aether.impl.ArtifactDescriptorReader;
43 import org.eclipse.aether.impl.MetadataGeneratorFactory;
44 import org.eclipse.aether.impl.VersionRangeResolver;
45 import org.eclipse.aether.impl.VersionResolver;
46 import org.eclipse.aether.impl.guice.AetherModule;
47 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
48 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
49 import org.eclipse.aether.transport.file.FileTransporterFactory;
50 import org.eclipse.aether.transport.http.ChecksumExtractor;
51 import org.eclipse.aether.transport.http.HttpTransporterFactory;
52
53
54
55
56
57
58
59 class DemoResolverModule extends AbstractModule {
60
61 @Override
62 protected void configure() {
63
64
65
66 install(new AetherModule());
67
68
69 bind(ArtifactDescriptorReader.class)
70 .to(DefaultArtifactDescriptorReader.class)
71 .in(Singleton.class);
72 bind(VersionResolver.class).to(DefaultVersionResolver.class).in(Singleton.class);
73 bind(VersionRangeResolver.class).to(DefaultVersionRangeResolver.class).in(Singleton.class);
74 bind(MetadataGeneratorFactory.class)
75 .annotatedWith(Names.named("snapshot"))
76 .to(SnapshotMetadataGeneratorFactory.class)
77 .in(Singleton.class);
78
79 bind(MetadataGeneratorFactory.class)
80 .annotatedWith(Names.named("versions"))
81 .to(VersionsMetadataGeneratorFactory.class)
82 .in(Singleton.class);
83
84 bind(RepositoryConnectorFactory.class)
85 .annotatedWith(Names.named("basic"))
86 .to(BasicRepositoryConnectorFactory.class);
87 bind(TransporterFactory.class).annotatedWith(Names.named("file")).to(FileTransporterFactory.class);
88 bind(TransporterFactory.class).annotatedWith(Names.named("http")).to(HttpTransporterFactory.class);
89 }
90
91
92
93
94 @Provides
95 @Singleton
96 Map<String, ChecksumExtractor> provideChecksumExtractors() {
97 return Collections.emptyMap();
98 }
99
100
101
102
103 @Provides
104 @Singleton
105 Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
106 @Named("basic") RepositoryConnectorFactory basic) {
107 Set<RepositoryConnectorFactory> factories = new HashSet<>();
108 factories.add(basic);
109 return Collections.unmodifiableSet(factories);
110 }
111
112
113
114
115 @Provides
116 @Singleton
117 Set<TransporterFactory> provideTransporterFactories(
118 @Named("file") TransporterFactory file, @Named("http") TransporterFactory http) {
119 Set<TransporterFactory> factories = new HashSet<>();
120 factories.add(file);
121 factories.add(http);
122 return Collections.unmodifiableSet(factories);
123 }
124
125
126
127
128 @Provides
129 @Singleton
130 Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
131 @Named("snapshot") MetadataGeneratorFactory snapshot,
132 @Named("versions") MetadataGeneratorFactory versions) {
133 Set<MetadataGeneratorFactory> factories = new HashSet<>(2);
134 factories.add(snapshot);
135 factories.add(versions);
136 return Collections.unmodifiableSet(factories);
137 }
138
139
140
141
142
143 @Provides
144 ModelBuilder provideModelBuilder() {
145 return new DefaultModelBuilderFactory().newInstance();
146 }
147
148 @Provides
149 ModelCacheFactory provideModelCacheFactory() {
150 return new DefaultModelCacheFactory();
151 }
152 }