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.filter;
20
21 import java.io.IOException;
22 import java.io.UncheckedIOException;
23 import java.nio.charset.StandardCharsets;
24 import java.nio.file.Files;
25 import java.nio.file.Path;
26
27 import org.eclipse.aether.DefaultRepositorySystemSession;
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider;
30 import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
31 import org.eclipse.aether.repository.RemoteRepository;
32 import org.eclipse.aether.spi.connector.filter.RemoteRepositoryFilterSource;
33
34
35
36
37 public class PrefixesRemoteRepositoryFilterSourceTest extends RemoteRepositoryFilterSourceTestSupport {
38 @Override
39 protected RemoteRepositoryFilterSource getRemoteRepositoryFilterSource(
40 DefaultRepositorySystemSession session, RemoteRepository remoteRepository) {
41 DefaultRepositoryLayoutProvider layoutProvider = new DefaultRepositoryLayoutProvider();
42 layoutProvider.addRepositoryLayoutFactory(new Maven2RepositoryLayoutFactory());
43 return new PrefixesRemoteRepositoryFilterSource(layoutProvider);
44 }
45
46 @Override
47 protected void enableSource(DefaultRepositorySystemSession session) {
48 session.setConfigProperty(
49 "aether.remoteRepositoryFilter." + PrefixesRemoteRepositoryFilterSource.NAME, Boolean.TRUE.toString());
50 }
51
52 @Override
53 protected void allowArtifact(
54 DefaultRepositorySystemSession session, RemoteRepository remoteRepository, Artifact artifact) {
55 try {
56 Path baseDir = session.getLocalRepository()
57 .getBasedir()
58 .toPath()
59 .resolve(PrefixesRemoteRepositoryFilterSource.LOCAL_REPO_PREFIX_DIR);
60 Path groupId = baseDir.resolve(PrefixesRemoteRepositoryFilterSource.PREFIXES_FILE_PREFIX
61 + remoteRepository.getId()
62 + PrefixesRemoteRepositoryFilterSource.PREFIXES_FILE_SUFFIX);
63 Files.createDirectories(groupId.getParent());
64 Files.write(groupId, artifact.getGroupId().replaceAll("\\.", "/").getBytes(StandardCharsets.UTF_8));
65 } catch (IOException e) {
66 throw new UncheckedIOException(e);
67 }
68 }
69 }