1 package org.eclipse.aether.connector.basic;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collections;
23 import java.util.Map;
24
25 import javax.inject.Inject;
26 import javax.inject.Named;
27
28 import static java.util.Objects.requireNonNull;
29
30 import org.eclipse.aether.RepositorySystemSession;
31 import org.eclipse.aether.repository.RemoteRepository;
32 import org.eclipse.aether.spi.connector.RepositoryConnector;
33 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
34 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
35 import org.eclipse.aether.spi.connector.checksum.ProvidedChecksumsSource;
36 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
37 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
38 import org.eclipse.aether.spi.io.FileProcessor;
39 import org.eclipse.aether.spi.locator.Service;
40 import org.eclipse.aether.spi.locator.ServiceLocator;
41 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
42
43
44
45
46
47
48 @Named( "basic" )
49 public final class BasicRepositoryConnectorFactory
50 implements RepositoryConnectorFactory, Service
51 {
52 private TransporterProvider transporterProvider;
53
54 private RepositoryLayoutProvider layoutProvider;
55
56 private ChecksumPolicyProvider checksumPolicyProvider;
57
58 private FileProcessor fileProcessor;
59
60 private Map<String, ProvidedChecksumsSource> providedChecksumsSources;
61
62 private float priority;
63
64
65
66
67
68
69 public BasicRepositoryConnectorFactory()
70 {
71
72 }
73
74 @Inject
75 BasicRepositoryConnectorFactory( TransporterProvider transporterProvider,
76 RepositoryLayoutProvider layoutProvider,
77 ChecksumPolicyProvider checksumPolicyProvider,
78 FileProcessor fileProcessor,
79 Map<String, ProvidedChecksumsSource> providedChecksumsSources )
80 {
81 setTransporterProvider( transporterProvider );
82 setRepositoryLayoutProvider( layoutProvider );
83 setChecksumPolicyProvider( checksumPolicyProvider );
84 setFileProcessor( fileProcessor );
85 setProvidedChecksumSources( providedChecksumsSources );
86 }
87
88 public void initService( ServiceLocator locator )
89 {
90 setTransporterProvider( locator.getService( TransporterProvider.class ) );
91 setRepositoryLayoutProvider( locator.getService( RepositoryLayoutProvider.class ) );
92 setChecksumPolicyProvider( locator.getService( ChecksumPolicyProvider.class ) );
93 setFileProcessor( locator.getService( FileProcessor.class ) );
94 setProvidedChecksumSources( Collections.emptyMap() );
95 }
96
97
98
99
100
101
102
103 public BasicRepositoryConnectorFactory setTransporterProvider( TransporterProvider transporterProvider )
104 {
105 this.transporterProvider = requireNonNull( transporterProvider, "transporter provider cannot be null" );
106 return this;
107 }
108
109
110
111
112
113
114
115 public BasicRepositoryConnectorFactory setRepositoryLayoutProvider( RepositoryLayoutProvider layoutProvider )
116 {
117 this.layoutProvider = requireNonNull( layoutProvider, "repository layout provider cannot be null" );
118 return this;
119 }
120
121
122
123
124
125
126
127 public BasicRepositoryConnectorFactory setChecksumPolicyProvider( ChecksumPolicyProvider checksumPolicyProvider )
128 {
129 this.checksumPolicyProvider = requireNonNull(
130 checksumPolicyProvider, "checksum policy provider cannot be null" );
131 return this;
132 }
133
134
135
136
137
138
139
140 public BasicRepositoryConnectorFactory setFileProcessor( FileProcessor fileProcessor )
141 {
142 this.fileProcessor = requireNonNull( fileProcessor, "file processor cannot be null" );
143 return this;
144 }
145
146
147
148
149
150
151
152
153 public BasicRepositoryConnectorFactory setProvidedChecksumSources(
154 Map<String, ProvidedChecksumsSource> providedChecksumsSources )
155 {
156 this.providedChecksumsSources = requireNonNull(
157 providedChecksumsSources, "provided checksum sources cannot be null"
158 );
159 return this;
160 }
161
162 public float getPriority()
163 {
164 return priority;
165 }
166
167
168
169
170
171
172
173 public BasicRepositoryConnectorFactory setPriority( float priority )
174 {
175 this.priority = priority;
176 return this;
177 }
178
179 public RepositoryConnector newInstance( RepositorySystemSession session, RemoteRepository repository )
180 throws NoRepositoryConnectorException
181 {
182 requireNonNull( session, "session cannot be null" );
183 requireNonNull( repository, "repository cannot be null" );
184
185 return new BasicRepositoryConnector( session, repository, transporterProvider, layoutProvider,
186 checksumPolicyProvider, fileProcessor, providedChecksumsSources );
187 }
188
189 }