1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.test.util;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.nio.file.Files;
24 import java.nio.file.Path;
25 import java.util.HashSet;
26 import java.util.Set;
27
28 import org.eclipse.aether.RepositorySystemSession;
29 import org.eclipse.aether.artifact.Artifact;
30 import org.eclipse.aether.metadata.Metadata;
31 import org.eclipse.aether.repository.LocalArtifactRegistration;
32 import org.eclipse.aether.repository.LocalArtifactRequest;
33 import org.eclipse.aether.repository.LocalArtifactResult;
34 import org.eclipse.aether.repository.LocalMetadataRegistration;
35 import org.eclipse.aether.repository.LocalMetadataRequest;
36 import org.eclipse.aether.repository.LocalMetadataResult;
37 import org.eclipse.aether.repository.LocalRepository;
38 import org.eclipse.aether.repository.LocalRepositoryManager;
39 import org.eclipse.aether.repository.RemoteRepository;
40
41 import static java.util.Objects.requireNonNull;
42
43
44
45
46 public class TestLocalRepositoryManager implements LocalRepositoryManager {
47
48 private LocalRepository localRepository;
49
50 private final Set<Artifact> unavailableArtifacts = new HashSet<>();
51
52 private final Set<Artifact> artifactRegistrations = new HashSet<>();
53
54 private final Set<Metadata> metadataRegistrations = new HashSet<>();
55
56 public TestLocalRepositoryManager() {
57 try {
58 Path tempDirectory = Files.createTempDirectory("test-local-repo");
59 tempDirectory.toFile().deleteOnExit();
60 localRepository = new LocalRepository(tempDirectory);
61 } catch (IOException e) {
62 throw new IllegalStateException(e);
63 }
64 }
65
66 public LocalRepository getRepository() {
67 return localRepository;
68 }
69
70 public String getPathForLocalArtifact(Artifact artifact) {
71 requireNonNull(artifact, "artifact cannot be null");
72
73 String artifactId = artifact.getArtifactId();
74 String groupId = artifact.getGroupId();
75 String extension = artifact.getExtension();
76 String version = artifact.getVersion();
77 String classifier = artifact.getClassifier();
78
79 return String.format(
80 "%s/%s/%s/%s-%s-%s%s.%s",
81 groupId, artifactId, version, groupId, artifactId, version, classifier, extension);
82 }
83
84 public String getPathForRemoteArtifact(Artifact artifact, RemoteRepository repository, String context) {
85 requireNonNull(artifact, "artifact cannot be null");
86 requireNonNull(repository, "repository cannot be null");
87
88 return getPathForLocalArtifact(artifact);
89 }
90
91 public String getPathForLocalMetadata(Metadata metadata) {
92 requireNonNull(metadata, "metadata cannot be null");
93
94 String artifactId = metadata.getArtifactId();
95 String groupId = metadata.getGroupId();
96 String version = metadata.getVersion();
97 return String.format("%s/%s/%s/%s-%s-%s.xml", groupId, artifactId, version, groupId, artifactId, version);
98 }
99
100 public String getPathForRemoteMetadata(Metadata metadata, RemoteRepository repository, String context) {
101 requireNonNull(metadata, "metadata cannot be null");
102 requireNonNull(repository, "repository cannot be null");
103
104 return getPathForLocalMetadata(metadata);
105 }
106
107 public LocalArtifactResult find(RepositorySystemSession session, LocalArtifactRequest request) {
108 requireNonNull(session, "session cannot be null");
109 requireNonNull(request, "request cannot be null");
110
111 Artifact artifact = request.getArtifact();
112
113 LocalArtifactResult result = new LocalArtifactResult(request);
114 File file = new File(localRepository.getBasedir(), getPathForLocalArtifact(artifact));
115 result.setFile(file.isFile() ? file : null);
116 result.setAvailable(file.isFile() && !unavailableArtifacts.contains(artifact));
117
118 return result;
119 }
120
121 public void add(RepositorySystemSession session, LocalArtifactRegistration request) {
122 requireNonNull(session, "session cannot be null");
123 requireNonNull(request, "request cannot be null");
124
125 artifactRegistrations.add(request.getArtifact());
126 }
127
128 public LocalMetadataResult find(RepositorySystemSession session, LocalMetadataRequest request) {
129 requireNonNull(session, "session cannot be null");
130 requireNonNull(request, "request cannot be null");
131
132 Metadata metadata = request.getMetadata();
133
134 LocalMetadataResult result = new LocalMetadataResult(request);
135 File file = new File(localRepository.getBasedir(), getPathForLocalMetadata(metadata));
136 result.setFile(file.isFile() ? file : null);
137
138 return result;
139 }
140
141 public void add(RepositorySystemSession session, LocalMetadataRegistration request) {
142 requireNonNull(session, "session cannot be null");
143 requireNonNull(request, "request cannot be null");
144
145 metadataRegistrations.add(request.getMetadata());
146 }
147
148 public Set<Artifact> getArtifactRegistration() {
149 return artifactRegistrations;
150 }
151
152 public Set<Metadata> getMetadataRegistration() {
153 return metadataRegistrations;
154 }
155
156 public void setArtifactAvailability(Artifact artifact, boolean available) {
157 if (available) {
158 unavailableArtifacts.remove(artifact);
159 } else {
160 unavailableArtifacts.add(artifact);
161 }
162 }
163 }