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