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