Skip to content

Commit a673b85

Browse files
author
amvanbaren
committed
Update code
1 parent 9b92230 commit a673b85

10 files changed

+57
-59
lines changed

server/src/main/java/org/eclipse/openvsx/ExtensionProcessor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@
2828

2929
import javax.xml.parsers.DocumentBuilderFactory;
3030
import javax.xml.parsers.ParserConfigurationException;
31+
import java.io.ByteArrayInputStream;
32+
import java.io.EOFException;
33+
import java.io.IOException;
34+
import java.nio.charset.StandardCharsets;
35+
import java.nio.file.Files;
36+
import java.util.*;
37+
import java.util.function.Consumer;
38+
import java.util.function.Function;
39+
import java.util.regex.Pattern;
40+
import java.util.stream.Collectors;
41+
import java.util.zip.ZipException;
42+
import java.util.zip.ZipFile;
3143

3244
/**
3345
* Processes uploaded extension files and extracts their metadata.

server/src/main/java/org/eclipse/openvsx/migration/ExtractResourcesJobRequestHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,5 @@ public void run(MigrationJobRequest jobRequest) throws Exception {
5252
}
5353

5454
service.deleteWebResources(extVersion);
55-
migrations.deleteFile(extensionFile);
5655
}
5756
}

server/src/main/java/org/eclipse/openvsx/migration/MigrationRunner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private void renameDownloadsMigration() {
7070
private void setContentTypeMigration() {
7171
var jobName = "SetContentTypeMigration";
7272
var handler = SetContentTypeJobRequestHandler.class;
73-
repositories.findNotMigratedContentTypes().forEach(item -> enqueueJob(jobName, handler, item));
73+
repositories.findNotMigratedContentTypes().forEach(item -> migrations.enqueueMigration(jobName, handler, item));
7474
}
7575

7676
private void extractVsixManifestMigration() {

server/src/main/java/org/eclipse/openvsx/migration/MigrationService.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ public TempFile getExtensionFile(Map.Entry<FileResource, byte[]> entry) throws I
7979

8080
var content = entry.getValue();
8181
if(content == null) {
82-
var storage = getStorage(resource);
83-
var uri = storage.getLocation(resource);
82+
var storage = getStorage(entry.getKey());
83+
var uri = storage.getLocation(entry.getKey());
8484
backgroundRestTemplate.execute("{extensionLocation}", HttpMethod.GET, null, response -> {
8585
try(var out = Files.newOutputStream(extensionFile.getPath())) {
8686
response.getBody().transferTo(out);
@@ -95,14 +95,6 @@ public TempFile getExtensionFile(Map.Entry<FileResource, byte[]> entry) throws I
9595
return extensionFile;
9696
}
9797

98-
public void deleteFile(Path filePath) {
99-
try {
100-
Files.delete(filePath);
101-
} catch (IOException e) {
102-
throw new RuntimeException("Failed to delete file");
103-
}
104-
}
105-
10698
@Retryable
10799
public void uploadFileResource(FileResource resource) {
108100
if(resource.getStorageType().equals(FileResource.STORAGE_DB)) {

server/src/main/java/org/eclipse/openvsx/migration/SetContentTypeJobRequestHandler.java

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
package org.eclipse.openvsx.migration;
1111

1212
import org.eclipse.openvsx.ExtensionProcessor;
13-
import org.eclipse.openvsx.entities.ExtensionVersion;
1413
import org.eclipse.openvsx.entities.FileResource;
1514
import org.jobrunr.jobs.annotations.Job;
1615
import org.jobrunr.jobs.lambdas.JobRequestHandler;
@@ -19,6 +18,7 @@
1918
import org.springframework.beans.factory.annotation.Autowired;
2019
import org.springframework.stereotype.Component;
2120

21+
import java.io.IOException;
2222
import java.util.AbstractMap;
2323
import java.util.function.Consumer;
2424

@@ -36,28 +36,29 @@ public class SetContentTypeJobRequestHandler implements JobRequestHandler<Migrat
3636
@Override
3737
@Job(name = "Set content type for published file resources", retries = 3)
3838
public void run(MigrationJobRequest jobRequest) throws Exception {
39-
var extVersion = migrations.find(jobRequest, ExtensionVersion.class);
39+
var extVersion = migrations.getExtension(jobRequest.getEntityId());
4040
logger.info("Set content type for: {}.{}-{}@{}", extVersion.getExtension().getNamespace().getName(), extVersion.getExtension().getName(), extVersion.getVersion(), extVersion.getTargetPlatform());
4141

4242
var entry = migrations.getDownload(extVersion);
43-
var extensionFile = migrations.getFile(entry);
44-
try (var processor = new ExtensionProcessor(extensionFile)) {
45-
Consumer<FileResource> consumer = resource -> {
46-
var existingResource = service.getExistingResource(extVersion, resource);
47-
if(existingResource == null) {
48-
return;
49-
}
50-
51-
var resourceFile = migrations.getFile(new AbstractMap.SimpleEntry<>(existingResource, resource.getContent()));
52-
migrations.deleteResource(existingResource);
53-
migrations.uploadResource(existingResource, resourceFile);
54-
migrations.deleteFile(resourceFile);
55-
};
56-
57-
processor.getFileResources(extVersion).forEach(consumer);
58-
processor.processEachResource(extVersion, consumer);
59-
}
43+
try(var extensionFile = migrations.getExtensionFile(entry)) {
44+
try (var processor = new ExtensionProcessor(extensionFile)) {
45+
Consumer<FileResource> consumer = resource -> {
46+
var existingResource = service.getExistingResource(extVersion, resource);
47+
if (existingResource == null) {
48+
return;
49+
}
50+
51+
try (var resourceFile = migrations.getExtensionFile(new AbstractMap.SimpleEntry<>(existingResource, resource.getContent()))) {
52+
migrations.deleteFileResource(existingResource);
53+
migrations.uploadFileResource(existingResource, resourceFile);
54+
} catch (IOException e) {
55+
throw new RuntimeException(e);
56+
}
57+
};
6058

61-
migrations.deleteFile(extensionFile);
59+
processor.getFileResources(extVersion).forEach(consumer);
60+
processor.processEachResource(extVersion, consumer);
61+
}
62+
}
6263
}
6364
}

server/src/main/java/org/eclipse/openvsx/migration/SetContentTypeJobService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.springframework.beans.factory.annotation.Autowired;
1616
import org.springframework.stereotype.Component;
1717

18-
import javax.transaction.Transactional;
18+
import jakarta.transaction.Transactional;
1919

2020
@Component
2121
public class SetContentTypeJobService {

server/src/main/java/org/eclipse/openvsx/migration/SetPreReleaseJobRequestHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public void run(MigrationJobRequest jobRequest) throws Exception {
3838
try (var extensionFile = migrations.getExtensionFile(entry)) {
3939
service.updatePreviewAndPreRelease(extVersion, extensionFile);
4040
}
41-
migrations.deleteFile(extensionFile);
4241
}
4342
}
4443
}

server/src/main/java/org/eclipse/openvsx/security/SecurityConfig.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
1919
import org.springframework.security.web.SecurityFilterChain;
2020
import org.springframework.security.web.authentication.Http403ForbiddenEntryPoint;
21-
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
22-
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
23-
import org.springframework.security.web.csrf.CsrfAuthenticationStrategy;
24-
import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository;
2521
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
2622
import org.springframework.security.web.util.matcher.RequestMatcher;
2723

server/src/main/java/org/eclipse/openvsx/storage/AzureBlobStorageService.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,32 +68,31 @@ protected BlobContainerClient getContainerClient() {
6868
@Override
6969
public void uploadFile(FileResource resource) {
7070
var blobName = getBlobName(resource);
71-
uploadFile(resource.getContent(), resource.getName(), blobName);
71+
uploadFile(resource.getContent(), resource.getName(), blobName, ""); // TODO add contentType
7272
}
7373

7474
@Override
7575
public void uploadNamespaceLogo(Namespace namespace) {
7676
var blobName = getBlobName(namespace);
77-
uploadFile(namespace.getLogoBytes(), namespace.getLogoName(), blobName);
77+
uploadFile(namespace.getLogoBytes(), namespace.getLogoName(), blobName, ""); // TODO add contentType
7878
}
79-
80-
protected void uploadFile(byte[] content, String fileName, String blobName) {
79+
80+
protected void uploadFile(byte[] content, String fileName, String blobName, String contentType) {
8181
if (StringUtils.isEmpty(serviceEndpoint)) {
8282
throw new IllegalStateException("Cannot upload file "
8383
+ blobName + ": missing Azure blob service endpoint");
8484
}
8585

8686
var blobClient = getContainerClient().getBlobClient(blobName);
8787
var headers = new BlobHttpHeaders();
88-
headers.setContentType(resource.getContentType());
89-
if (resource.getName().endsWith(".vsix")) {
90-
headers.setContentDisposition("attachment; filename=\"" + resource.getName() + "\"");
88+
headers.setContentType(contentType);
89+
if (fileName.endsWith(".vsix")) {
90+
headers.setContentDisposition("attachment; filename=\"" + fileName + "\"");
9191
} else {
92-
var cacheControl = StorageUtil.getCacheControl(resource.getName());
92+
var cacheControl = StorageUtil.getCacheControl(fileName);
9393
headers.setCacheControl(cacheControl.getHeaderValue());
9494
}
9595

96-
var content = resource.getContent();
9796
try (var dataStream = new ByteArrayInputStream(content)) {
9897
blobClient.upload(dataStream, content.length, true);
9998
blobClient.setHttpHeaders(headers);
@@ -103,12 +102,12 @@ protected void uploadFile(byte[] content, String fileName, String blobName) {
103102
}
104103

105104
@Override
106-
public void uploadFile(FileResource resource, TempFile file) {
105+
public void uploadFile(FileResource resource, TempFile file, String contentType) {
107106
var blobName = getBlobName(resource);
108-
uploadFile(file, resource.getName(), blobName);
107+
uploadFile(file, resource.getName(), blobName, contentType);
109108
}
110109

111-
protected void uploadFile(TempFile file, String fileName, String blobName) {
110+
protected void uploadFile(TempFile file, String fileName, String blobName, String contentType) {
112111
if (StringUtils.isEmpty(serviceEndpoint)) {
113112
throw new IllegalStateException("Cannot upload file "
114113
+ blobName + ": missing Azure blob service endpoint");

server/src/main/java/org/eclipse/openvsx/storage/GoogleCloudStorageService.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,19 @@ public void uploadNamespaceLogo(Namespace namespace) {
8383
+ objectId + ": missing Google bucket id");
8484
}
8585

86-
uploadFile(namespace.getLogoBytes(), namespace.getLogoName(), objectId);
86+
uploadFile(namespace.getLogoBytes(), namespace.getLogoName(), objectId, ""); // TODO add contentType
8787
}
8888

89-
protected void uploadFile(byte[] content, String fileName, String objectId) {
89+
protected void uploadFile(byte[] content, String fileName, String objectId, String contentType) {
9090
var blobInfoBuilder = BlobInfo.newBuilder(BlobId.of(bucketId, objectId))
91-
.setContentType(resource.getContentType());
92-
if (resource.getName().endsWith(".vsix")) {
93-
blobInfoBuilder.setContentDisposition("attachment; filename=\"" + resource.getName() + "\"");
91+
.setContentType(contentType);
92+
if (fileName.endsWith(".vsix")) {
93+
blobInfoBuilder.setContentDisposition("attachment; filename=\"" + fileName + "\"");
9494
} else {
95-
var cacheControl = StorageUtil.getCacheControl(resource.getName());
95+
var cacheControl = StorageUtil.getCacheControl(fileName);
9696
blobInfoBuilder.setCacheControl(cacheControl.getHeaderValue());
9797
}
98-
getStorage().create(blobInfoBuilder.build(), resource.getContent());
98+
getStorage().create(blobInfoBuilder.build(), content);
9999
}
100100

101101
@Override
@@ -106,10 +106,10 @@ public void uploadFile(FileResource resource, TempFile file) {
106106
+ objectId + ": missing Google bucket id");
107107
}
108108

109-
uploadFile(file, resource.getName(), objectId);
109+
uploadFile(file, resource.getName(), objectId, ""); // TODO add contentType
110110
}
111111

112-
protected void uploadFile(TempFile file, String fileName, String objectId) {
112+
protected void uploadFile(TempFile file, String fileName, String objectId, String contentType) {
113113
var blobInfoBuilder = BlobInfo.newBuilder(BlobId.of(bucketId, objectId))
114114
.setContentType(contentType);
115115
if (fileName.endsWith(".vsix")) {

0 commit comments

Comments
 (0)