diff --git a/ocr-service-v1/ocr-service-server-v1/pom.xml b/ocr-service-v1/ocr-service-server-v1/pom.xml index cd901ea..20ea451 100644 --- a/ocr-service-v1/ocr-service-server-v1/pom.xml +++ b/ocr-service-v1/ocr-service-server-v1/pom.xml @@ -16,6 +16,7 @@ 0.10.0 2.118.0 2.19.0 + 2.33.0 @@ -38,6 +39,7 @@ com.iqser.red.commons storage-commons + ${storage-commons.version} com.iqser.red.commons diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/FileStorageService.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/FileStorageService.java index 22c8c96..f72ba8a 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/FileStorageService.java +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/FileStorageService.java @@ -1,7 +1,11 @@ package com.iqser.red.service.ocr.v1.server.service; import java.io.ByteArrayInputStream; +import java.io.File; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Service; @@ -32,14 +36,17 @@ public class FileStorageService { @SneakyThrows public byte[] getOriginalFile(String dossierId, String fileId) { - return IOUtils.toByteArray(storageService.getObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)).getInputStream()); + InputStream inputStream = getInputStream(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)); + byte[] bytes = IOUtils.toByteArray(inputStream); + inputStream.close(); + return bytes; } @SneakyThrows public InputStream getOriginalFileAsStream(String dossierId, String fileId) { - return storageService.getObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)).getInputStream(); + return getInputStream(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)); } @@ -67,4 +74,12 @@ public class FileStorageService { return storageService.readJSONObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.IMAGE_INFO), ImageServiceResponse.class); } + @SneakyThrows + private InputStream getInputStream(String dossierId, String fileId) { + + File tempFile = File.createTempFile("temp", ".data"); + storageService.downloadTo(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN), tempFile); + return Files.newInputStream(Paths.get(tempFile.getPath()), StandardOpenOption.DELETE_ON_CLOSE); + } + } diff --git a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/utils/FileSystemBackedStorageService.java b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/utils/FileSystemBackedStorageService.java index 67ad84c..72768b7 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/utils/FileSystemBackedStorageService.java +++ b/ocr-service-v1/ocr-service-server-v1/src/test/java/com/iqser/red/service/ocr/v1/server/utils/FileSystemBackedStorageService.java @@ -11,7 +11,6 @@ import java.util.Map; import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; -import org.springframework.core.io.InputStreamResource; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.commons.jackson.ObjectMapperFactory; @@ -32,14 +31,14 @@ public class FileSystemBackedStorageService implements StorageService { @SneakyThrows @Override - public InputStreamResource getObject(String tenantId, String objectId) { + public void downloadTo(String tenantId, String objectId, File destinationFile) { var res = dataMap.get(objectId); if (res == null) { throw new StorageObjectDoesNotExist(new RuntimeException()); } - return new InputStreamResource(new FileInputStream(res)); + IOUtils.copy(new FileInputStream(res), new FileOutputStream(destinationFile)); }