Fixing SCP storage loading issue in file backend
diff --git a/services/resource-service/server/src/main/java/org/apache/airavata/mft/resource/server/backend/file/FileBasedResourceBackend.java b/services/resource-service/server/src/main/java/org/apache/airavata/mft/resource/server/backend/file/FileBasedResourceBackend.java
index eace41a..d127d6a 100644
--- a/services/resource-service/server/src/main/java/org/apache/airavata/mft/resource/server/backend/file/FileBasedResourceBackend.java
+++ b/services/resource-service/server/src/main/java/org/apache/airavata/mft/resource/server/backend/file/FileBasedResourceBackend.java
@@ -137,21 +137,36 @@
.map(resource -> {
JSONObject r = (JSONObject) resource;
- SCPResource.Builder builder = SCPResource.newBuilder()
- .setResourceId(r.get("resourceId").toString())
- .setScpStorage(SCPStorage.newBuilder().setStorageId(r.get("storageId").toString()).getDefaultInstanceForType());
+ Optional<SCPStorage> storage = Optional.of(SCPStorage.getDefaultInstance());
+ String storageId = r.get("storageId").toString();
- switch (r.get("resourceMode").toString()) {
- case "FILE":
- FileResource fileResource = FileResource.newBuilder().setResourcePath(r.get("resourcePath").toString()).build();
- builder = builder.setFile(fileResource);
- break;
- case "DIRECTORY":
- DirectoryResource directoryResource = DirectoryResource.newBuilder().setResourcePath(r.get("resourcePath").toString()).build();
- builder = builder.setDirectory(directoryResource);
- break;
+ try {
+ storage = getSCPStorage(SCPStorageGetRequest.newBuilder().setStorageId(storageId).build());
+ } catch (Exception e) {
+ logger.error("Errored while fetching storage with id {}", storageId, e);
+ return null;
}
- return builder.build();
+
+ if (storage.isPresent()) {
+ SCPResource.Builder builder = SCPResource.newBuilder()
+ .setResourceId(r.get("resourceId").toString())
+ .setScpStorage(storage.get());
+
+ switch (r.get("resourceMode").toString()) {
+ case "FILE":
+ FileResource fileResource = FileResource.newBuilder().setResourcePath(r.get("resourcePath").toString()).build();
+ builder = builder.setFile(fileResource);
+ break;
+ case "DIRECTORY":
+ DirectoryResource directoryResource = DirectoryResource.newBuilder().setResourcePath(r.get("resourcePath").toString()).build();
+ builder = builder.setDirectory(directoryResource);
+ break;
+ }
+ return builder.build();
+ } else {
+ logger.error("Coudn't find an storage with id {}", storageId);
+ return null;
+ }
}).collect(Collectors.toList());