Skip to content

Commit 1be10ca

Browse files
authored
Merge pull request #724 from amvanbaren/change-namespace-sha256
Also rename checksum file on namespace change
2 parents c5e7a7e + 66b2e53 commit 1be10ca

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

server/src/main/java/org/eclipse/openvsx/admin/ChangeNamespaceJobRequestHandler.java

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,15 @@
2929
import java.util.*;
3030
import java.util.stream.Collectors;
3131

32+
import static org.eclipse.openvsx.entities.FileResource.DOWNLOAD;
33+
import static org.eclipse.openvsx.entities.FileResource.DOWNLOAD_SHA256;
34+
3235
@Component
3336
public class ChangeNamespaceJobRequestHandler implements JobRequestHandler<ChangeNamespaceJobRequest> {
3437

3538
private static final Logger LOGGER = LoggerFactory.getLogger(ChangeNamespaceJobRequestHandler.class);
3639

40+
private static final List<String> RENAME_TYPES = List.of(DOWNLOAD, DOWNLOAD_SHA256);
3741
private static final Map<String, Object> LOCKS;
3842

3943
static {
@@ -94,7 +98,7 @@ private void execute(ChangeNamespaceJobRequest jobRequest) {
9498
pairs = copyResources(oldResources, newNamespace);
9599
storageUtil.copyFiles(pairs);
96100
updatedResources = pairs.stream()
97-
.filter(pair -> pair.getFirst().getType().equals(FileResource.DOWNLOAD))
101+
.filter(pair -> RENAME_TYPES.contains(pair.getFirst().getType()))
98102
.map(pair -> {
99103
var oldResource = pair.getFirst();
100104
var newResource = pair.getSecond();
@@ -103,10 +107,20 @@ private void execute(ChangeNamespaceJobRequest jobRequest) {
103107
})
104108
.collect(Collectors.toList());
105109
} else {
110+
var newBinaryNames = oldResources.stream()
111+
.map(FileResource::getExtension)
112+
.collect(Collectors.groupingBy(ExtensionVersion::getId))
113+
.entrySet().stream()
114+
.map(entry -> {
115+
var newBinaryName = newBinaryName(newNamespace, entry.getValue().get(0));
116+
return new AbstractMap.SimpleEntry<>(entry.getKey(), newBinaryName);
117+
})
118+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
119+
106120
updatedResources = oldResources
107-
.filter(resource -> resource.getType().equals(FileResource.DOWNLOAD))
121+
.filter(resource -> RENAME_TYPES.contains(resource.getType()))
108122
.map(resource -> {
109-
resource.setName(newResourceName(newNamespace, resource));
123+
resource.setName(getNewResourceName(resource, newBinaryNames));
110124
return resource;
111125
})
112126
.toList();
@@ -158,6 +172,12 @@ private List<Pair<FileResource, FileResource>> copyResources(Streamable<FileReso
158172
extVersions.put(key, newExtVersion);
159173
}
160174

175+
var newBinaryNames = extVersions.values().stream()
176+
.map(extVersion -> {
177+
return new AbstractMap.SimpleEntry<>(extVersion.getId(), newBinaryName(newNamespace, extVersion));
178+
})
179+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
180+
161181
return resources.stream()
162182
.map(resource -> {
163183
var newExtVersion = extVersions.get(resource.getExtension().getId());
@@ -166,32 +186,36 @@ private List<Pair<FileResource, FileResource>> copyResources(Streamable<FileReso
166186
newResource.setExtension(newExtVersion);
167187
newResource.setType(resource.getType());
168188
newResource.setStorageType(resource.getStorageType());
169-
var newResourceName = resource.getType().equals(FileResource.DOWNLOAD)
170-
? newResourceName(newNamespace, resource)
171-
: resource.getName();
172-
173-
newResource.setName(newResourceName);
189+
newResource.setName(getNewResourceName(resource, newBinaryNames));
174190
return Pair.of(resource, newResource);
175191
})
176192
.collect(Collectors.toList());
177193
}
178194

179-
private String newResourceName(Namespace newNamespace, FileResource resource) {
180-
var extVersion = resource.getExtension();
181-
var extension = extVersion.getExtension();
195+
private String getNewResourceName(FileResource resource, Map<Long, String> newBinaryNames) {
196+
var name = RENAME_TYPES.contains(resource.getType())
197+
? newBinaryNames.get(resource.getExtension().getId())
198+
: resource.getName();
199+
200+
if(resource.getType().equals(DOWNLOAD_SHA256)) {
201+
name = name.replace(".vsix", ".sha256");
202+
}
203+
204+
LOGGER.info("New resource name: {}", name);
205+
return name;
206+
}
182207

208+
private String newBinaryName(Namespace newNamespace, ExtensionVersion extVersion) {
183209
var newExtension = new Extension();
184210
newExtension.setNamespace(newNamespace);
185-
newExtension.setName(extension.getName());
211+
newExtension.setName(extVersion.getExtension().getName());
186212

187213
var newExtVersion = new ExtensionVersion();
188214
newExtVersion.setVersion(extVersion.getVersion());
189215
newExtVersion.setTargetPlatform(extVersion.getTargetPlatform());
190216
newExtVersion.setExtension(newExtension);
191217
try(var processor = new ExtensionProcessor(null)) {
192-
var newResourceName = processor.getBinaryName(newExtVersion);
193-
LOGGER.info("newResourceName: {}", newResourceName);
194-
return newResourceName;
218+
return processor.getBinaryName(newExtVersion);
195219
}
196220
}
197221
}

0 commit comments

Comments
 (0)