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