1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl;
20
21 import org.eclipse.aether.RepositorySystemSession;
22 import org.eclipse.aether.artifact.Artifact;
23 import org.eclipse.aether.metadata.Metadata;
24 import org.eclipse.aether.repository.RemoteRepository;
25 import org.eclipse.aether.util.ConfigUtils;
26
27
28
29
30
31
32
33
34
35
36
37
38 public abstract class LocalPathPrefixComposerFactorySupport implements LocalPathPrefixComposerFactory {
39
40
41
42
43
44
45
46
47 public static final String CONFIG_PROP_SPLIT = EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "split";
48
49 public static final boolean DEFAULT_SPLIT = false;
50
51
52
53
54
55
56
57
58 public static final String CONFIG_PROP_LOCAL_PREFIX =
59 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "localPrefix";
60
61 public static final String DEFAULT_LOCAL_PREFIX = "installed";
62
63
64
65
66
67
68
69
70 public static final String CONFIG_PROP_SPLIT_LOCAL =
71 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "splitLocal";
72
73 public static final boolean DEFAULT_SPLIT_LOCAL = false;
74
75
76
77
78
79
80
81
82 public static final String CONFIG_PROP_REMOTE_PREFIX =
83 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "remotePrefix";
84
85 public static final String DEFAULT_REMOTE_PREFIX = "cached";
86
87
88
89
90
91
92
93
94 public static final String CONFIG_PROP_SPLIT_REMOTE =
95 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "splitRemote";
96
97 public static final boolean DEFAULT_SPLIT_REMOTE = false;
98
99
100
101
102
103
104
105
106 public static final String CONFIG_PROP_SPLIT_REMOTE_REPOSITORY =
107 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "splitRemoteRepository";
108
109 public static final boolean DEFAULT_SPLIT_REMOTE_REPOSITORY = false;
110
111
112
113
114
115
116
117
118
119 public static final String CONFIG_PROP_SPLIT_REMOTE_REPOSITORY_LAST =
120 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "splitRemoteRepositoryLast";
121
122 public static final boolean DEFAULT_SPLIT_REMOTE_REPOSITORY_LAST = false;
123
124
125
126
127
128
129
130
131 public static final String CONFIG_PROP_RELEASES_PREFIX =
132 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "releasesPrefix";
133
134 public static final String DEFAULT_RELEASES_PREFIX = "releases";
135
136
137
138
139
140
141
142
143 public static final String CONFIG_PROP_SNAPSHOTS_PREFIX =
144 EnhancedLocalRepositoryManagerFactory.CONFIG_PROPS_PREFIX + "snapshotsPrefix";
145
146 public static final String DEFAULT_SNAPSHOTS_PREFIX = "snapshots";
147
148 protected boolean isSplit(RepositorySystemSession session) {
149 return ConfigUtils.getBoolean(session, DEFAULT_SPLIT, CONFIG_PROP_SPLIT);
150 }
151
152 protected String getLocalPrefix(RepositorySystemSession session) {
153 return ConfigUtils.getString(session, DEFAULT_LOCAL_PREFIX, CONFIG_PROP_LOCAL_PREFIX);
154 }
155
156 protected boolean isSplitLocal(RepositorySystemSession session) {
157 return ConfigUtils.getBoolean(session, DEFAULT_SPLIT_LOCAL, CONFIG_PROP_SPLIT_LOCAL);
158 }
159
160 protected String getRemotePrefix(RepositorySystemSession session) {
161 return ConfigUtils.getString(session, DEFAULT_REMOTE_PREFIX, CONFIG_PROP_REMOTE_PREFIX);
162 }
163
164 protected boolean isSplitRemote(RepositorySystemSession session) {
165 return ConfigUtils.getBoolean(session, DEFAULT_SPLIT_REMOTE, CONFIG_PROP_SPLIT_REMOTE);
166 }
167
168 protected boolean isSplitRemoteRepository(RepositorySystemSession session) {
169 return ConfigUtils.getBoolean(session, DEFAULT_SPLIT_REMOTE_REPOSITORY, CONFIG_PROP_SPLIT_REMOTE_REPOSITORY);
170 }
171
172 protected boolean isSplitRemoteRepositoryLast(RepositorySystemSession session) {
173 return ConfigUtils.getBoolean(
174 session, DEFAULT_SPLIT_REMOTE_REPOSITORY_LAST, CONFIG_PROP_SPLIT_REMOTE_REPOSITORY_LAST);
175 }
176
177 protected String getReleasesPrefix(RepositorySystemSession session) {
178 return ConfigUtils.getString(session, DEFAULT_RELEASES_PREFIX, CONFIG_PROP_RELEASES_PREFIX);
179 }
180
181 protected String getSnapshotsPrefix(RepositorySystemSession session) {
182 return ConfigUtils.getString(session, DEFAULT_SNAPSHOTS_PREFIX, CONFIG_PROP_SNAPSHOTS_PREFIX);
183 }
184
185
186
187
188
189 @SuppressWarnings("checkstyle:parameternumber")
190 protected abstract static class LocalPathPrefixComposerSupport implements LocalPathPrefixComposer {
191 protected final boolean split;
192
193 protected final String localPrefix;
194
195 protected final boolean splitLocal;
196
197 protected final String remotePrefix;
198
199 protected final boolean splitRemote;
200
201 protected final boolean splitRemoteRepository;
202
203 protected final boolean splitRemoteRepositoryLast;
204
205 protected final String releasesPrefix;
206
207 protected final String snapshotsPrefix;
208
209 protected LocalPathPrefixComposerSupport(
210 boolean split,
211 String localPrefix,
212 boolean splitLocal,
213 String remotePrefix,
214 boolean splitRemote,
215 boolean splitRemoteRepository,
216 boolean splitRemoteRepositoryLast,
217 String releasesPrefix,
218 String snapshotsPrefix) {
219 this.split = split;
220 this.localPrefix = localPrefix;
221 this.splitLocal = splitLocal;
222 this.remotePrefix = remotePrefix;
223 this.splitRemote = splitRemote;
224 this.splitRemoteRepository = splitRemoteRepository;
225 this.splitRemoteRepositoryLast = splitRemoteRepositoryLast;
226 this.releasesPrefix = releasesPrefix;
227 this.snapshotsPrefix = snapshotsPrefix;
228 }
229
230 @Override
231 public String getPathPrefixForLocalArtifact(Artifact artifact) {
232 if (!split) {
233 return null;
234 }
235 String result = localPrefix;
236 if (splitLocal) {
237 result += "/" + (artifact.isSnapshot() ? snapshotsPrefix : releasesPrefix);
238 }
239 return result;
240 }
241
242 @Override
243 public String getPathPrefixForRemoteArtifact(Artifact artifact, RemoteRepository repository) {
244 if (!split) {
245 return null;
246 }
247 String result = remotePrefix;
248 if (!splitRemoteRepositoryLast && splitRemoteRepository) {
249 result += "/" + repository.getId();
250 }
251 if (splitRemote) {
252 result += "/" + (artifact.isSnapshot() ? snapshotsPrefix : releasesPrefix);
253 }
254 if (splitRemoteRepositoryLast && splitRemoteRepository) {
255 result += "/" + repository.getId();
256 }
257 return result;
258 }
259
260 @Override
261 public String getPathPrefixForLocalMetadata(Metadata metadata) {
262 if (!split) {
263 return null;
264 }
265 String result = localPrefix;
266 if (splitLocal) {
267 result += "/" + (isSnapshot(metadata) ? snapshotsPrefix : releasesPrefix);
268 }
269 return result;
270 }
271
272 @Override
273 public String getPathPrefixForRemoteMetadata(Metadata metadata, RemoteRepository repository) {
274 if (!split) {
275 return null;
276 }
277 String result = remotePrefix;
278 if (!splitRemoteRepositoryLast && splitRemoteRepository) {
279 result += "/" + repository.getId();
280 }
281 if (splitRemote) {
282 result += "/" + (isSnapshot(metadata) ? snapshotsPrefix : releasesPrefix);
283 }
284 if (splitRemoteRepositoryLast && splitRemoteRepository) {
285 result += "/" + repository.getId();
286 }
287 return result;
288 }
289
290 protected boolean isSnapshot(Metadata metadata) {
291 return !metadata.getVersion().isEmpty() && metadata.getVersion().endsWith("-SNAPSHOT");
292 }
293 }
294 }