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.DefaultVersionRangeResolver;
36 import org.apache.maven.repository.internal.DefaultVersionResolver;
37 import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
38 import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
39 import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
40 import org.eclipse.aether.impl.ArtifactDescriptorReader;
41 import org.eclipse.aether.impl.MetadataGeneratorFactory;
42 import org.eclipse.aether.impl.VersionRangeResolver;
43 import org.eclipse.aether.impl.VersionResolver;
44 import org.eclipse.aether.impl.guice.AetherModule;
45 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
46 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
47 import org.eclipse.aether.transport.file.FileTransporterFactory;
48 import org.eclipse.aether.transport.http.ChecksumExtractor;
49 import org.eclipse.aether.transport.http.HttpTransporterFactory;
50
51
52
53
54
55
56
57 class DemoResolverModule extends AbstractModule {
58
59 @Override
60 protected void configure() {
61
62
63
64 install(new AetherModule());
65
66
67 bind(ArtifactDescriptorReader.class)
68 .to(DefaultArtifactDescriptorReader.class)
69 .in(Singleton.class);
70 bind(VersionResolver.class).to(DefaultVersionResolver.class).in(Singleton.class);
71 bind(VersionRangeResolver.class).to(DefaultVersionRangeResolver.class).in(Singleton.class);
72 bind(MetadataGeneratorFactory.class)
73 .annotatedWith(Names.named("snapshot"))
74 .to(SnapshotMetadataGeneratorFactory.class)
75 .in(Singleton.class);
76
77 bind(MetadataGeneratorFactory.class)
78 .annotatedWith(Names.named("versions"))
79 .to(VersionsMetadataGeneratorFactory.class)
80 .in(Singleton.class);
81
82 bind(RepositoryConnectorFactory.class)
83 .annotatedWith(Names.named("basic"))
84 .to(BasicRepositoryConnectorFactory.class);
85 bind(TransporterFactory.class).annotatedWith(Names.named("file")).to(FileTransporterFactory.class);
86 bind(TransporterFactory.class).annotatedWith(Names.named("http")).to(HttpTransporterFactory.class);
87 }
88
89
90
91
92 @Provides
93 @Singleton
94 Map<String, ChecksumExtractor> provideChecksumExtractors() {
95 return Collections.emptyMap();
96 }
97
98
99
100
101 @Provides
102 @Singleton
103 Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
104 @Named("basic") RepositoryConnectorFactory basic) {
105 Set<RepositoryConnectorFactory> factories = new HashSet<>();
106 factories.add(basic);
107 return Collections.unmodifiableSet(factories);
108 }
109
110
111
112
113 @Provides
114 @Singleton
115 Set<TransporterFactory> provideTransporterFactories(
116 @Named("file") TransporterFactory file, @Named("http") TransporterFactory http) {
117 Set<TransporterFactory> factories = new HashSet<>();
118 factories.add(file);
119 factories.add(http);
120 return Collections.unmodifiableSet(factories);
121 }
122
123
124
125
126 @Provides
127 @Singleton
128 Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
129 @Named("snapshot") MetadataGeneratorFactory snapshot,
130 @Named("versions") MetadataGeneratorFactory versions) {
131 Set<MetadataGeneratorFactory> factories = new HashSet<>(2);
132 factories.add(snapshot);
133 factories.add(versions);
134 return Collections.unmodifiableSet(factories);
135 }
136
137
138
139
140
141 @Provides
142 ModelBuilder provideModelBuilder() {
143 return new DefaultModelBuilderFactory().newInstance();
144 }
145 }