From 698fcbe2b77c188d20d627f1720d6c4ccb37ee3a Mon Sep 17 00:00:00 2001 From: Corina Olariu Date: Mon, 28 Aug 2023 18:29:56 +0300 Subject: [PATCH] RED-6860 - Transaction timeout while preparing download - add getObject for the download of archives --- .../api/impl/controller/DownloadController.java | 11 +++++------ .../utils/FileSystemBackedStorageService.java | 12 ++++++++++++ persistence-service-v1/pom.xml | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java index 20a131e37..6f2ff1b16 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java @@ -3,7 +3,6 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.PROCESS_DOWNLOAD; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOWNLOAD_STATUS; -import java.io.InputStream; import java.util.List; import java.util.Map; import java.util.Optional; @@ -211,7 +210,7 @@ public class DownloadController implements DownloadResource { var downloadStatus = getDownloadStatus(storageId, userId); var fileDownloadStream = getFileForDownload(storageId, userId); - return getResponseEntity(inline, new InputStreamResource(fileDownloadStream), downloadStatus.getFilename(), MediaType.parseMediaType("application/zip"), downloadStatus.getFileSize()); + return getResponseEntity(inline, fileDownloadStream, downloadStatus.getFilename(), MediaType.parseMediaType("application/zip"), downloadStatus.getFileSize()); }); } @@ -225,10 +224,10 @@ public class DownloadController implements DownloadResource { } - private InputStream getFileForDownload(String storageId, String userId) { + private InputStreamResource getFileForDownload(String storageId, String userId) { try { - var response = fileManagementStorageService.getObject(TenantContext.getTenantId(), storageId); + var response = storageService.getObject(TenantContext.getTenantId(), storageId); auditPersistenceService.audit(AuditRequest.builder() .userId(userId) @@ -276,14 +275,14 @@ public class DownloadController implements DownloadResource { return CompletableFuture.supplyAsync(() -> { TenantContext.setTenantId(tenantId); - log.debug("downloadFileUsingOTT '{}'", oneTimeToken); + log.debug("downloadFileUsingOTT {}", oneTimeToken); var token = oneTimeTokenDownloadService.getToken(oneTimeToken); var downloadStatus = getDownloadStatus(token.getStorageId(), token.getUserId()); var fileDownloadStream = getFileForDownload(token.getStorageId(), token.getUserId()); TenantContext.clear(); - return getResponseEntity(inline, new InputStreamResource(fileDownloadStream), downloadStatus.getFilename(), MediaType.parseMediaType("application/zip"), downloadStatus.getFileSize()); + return getResponseEntity(inline, fileDownloadStream, downloadStatus.getFilename(), MediaType.parseMediaType("application/zip"), downloadStatus.getFileSize()); }); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java index b5a7f7c66..0c9c61dd4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java @@ -117,4 +117,16 @@ public class FileSystemBackedStorageService implements StorageService { this.dataMap.clear(); } + @SneakyThrows + @Override + public InputStreamResource getObject(String tenantId, String objectId) { + + var res = dataMap.get(objectId); + if (res == null) { + throw new StorageObjectDoesNotExist(new RuntimeException()); + } + return new InputStreamResource(new FileInputStream(res)); + + } + } diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index a34485291..821e1bd2c 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -41,7 +41,7 @@ com.iqser.red platform-commons-dependency - 2.7.0 + 2.9.0 import pom -- 2.47.2