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));
}