This is an automated email from the ASF dual-hosted git repository.

yasithdev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/master by this push:
     new 60808eccc6 refactor: collapse duplicated method families in 
storage-service (#639)
60808eccc6 is described below

commit 60808eccc6db8d371336c171399d8b36ab987f8c
Author: Yasith Jayawardana <[email protected]>
AuthorDate: Sun Jun 7 20:17:30 2026 -0400

    refactor: collapse duplicated method families in storage-service (#639)
    
    In DataMovementRepository the four protocol getters were identical bar the 
mapper and the four adders bar the prefix/mapper; they now delegate to two 
private helpers (getMovement(id, mapper) and addMovement(entity)), with the 
per-protocol id injection kept in the typed wrappers and the asymmetric update* 
methods left untouched. In DataStagingTask the structurally identical 
getInput/getOutputStorageAdaptor methods now delegate to a single 
direction-parameterized helper, which also fixe [...]
---
 .../storage/repository/DataMovementRepository.java | 50 +++++++---------
 .../airavata/storage/task/DataStagingTask.java     | 68 +++++++++-------------
 2 files changed, 50 insertions(+), 68 deletions(-)

diff --git 
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/repository/DataMovementRepository.java
 
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/repository/DataMovementRepository.java
index 9d8d5ff339..4855d07c54 100644
--- 
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/repository/DataMovementRepository.java
+++ 
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/repository/DataMovementRepository.java
@@ -19,6 +19,7 @@
 */
 package org.apache.airavata.storage.repository;
 
+import java.util.function.Function;
 import org.apache.airavata.db.AbstractRepository;
 import org.apache.airavata.db.AppCatalogUtils;
 import org.apache.airavata.interfaces.AppCatalogException;
@@ -61,15 +62,26 @@ public class DataMovementRepository
         return dataMovementInterfaceEntity.getDataMovementInterfaceId();
     }
 
+    private String addMovement(StorageDataMovementEntity entity) throws 
AppCatalogException {
+        execute(entityManager -> entityManager.merge(entity));
+        return entity.getDataMovementId();
+    }
+
+    private <T> T getMovement(String dataMovementId, 
Function<StorageDataMovementEntity, T> mapper)
+            throws AppCatalogException {
+        StorageDataMovementEntity entity =
+                execute(entityManager -> 
entityManager.find(StorageDataMovementEntity.class, dataMovementId));
+        if (entity == null) return null;
+        return mapper.apply(entity);
+    }
+
     // --- LOCALDataMovement CRUD ---
 
     public String addLocalDataMovement(LOCALDataMovement localDataMovement) 
throws AppCatalogException {
         localDataMovement = localDataMovement.toBuilder()
                 .setDataMovementInterfaceId(AppCatalogUtils.getID("LOCAL"))
                 .build();
-        StorageDataMovementEntity entity = 
StorageMapper.INSTANCE.localDataMovementToEntity(localDataMovement);
-        execute(entityManager -> entityManager.merge(entity));
-        return entity.getDataMovementId();
+        return 
addMovement(StorageMapper.INSTANCE.localDataMovementToEntity(localDataMovement));
     }
 
     public void updateLocalDataMovement(LOCALDataMovement localDataMovement) 
throws AppCatalogException {
@@ -78,10 +90,7 @@ public class DataMovementRepository
     }
 
     public LOCALDataMovement getLocalDataMovement(String dataMovementId) 
throws AppCatalogException {
-        StorageDataMovementEntity entity =
-                execute(entityManager -> 
entityManager.find(StorageDataMovementEntity.class, dataMovementId));
-        if (entity == null) return null;
-        return StorageMapper.INSTANCE.localDataMovementToModel(entity);
+        return getMovement(dataMovementId, 
StorageMapper.INSTANCE::localDataMovementToModel);
     }
 
     // --- SCPDataMovement CRUD ---
@@ -90,9 +99,7 @@ public class DataMovementRepository
         scpDataMovement = scpDataMovement.toBuilder()
                 .setDataMovementInterfaceId(AppCatalogUtils.getID("SCP"))
                 .build();
-        StorageDataMovementEntity entity = 
StorageMapper.INSTANCE.scpDataMovementToEntity(scpDataMovement);
-        execute(entityManager -> entityManager.merge(entity));
-        return entity.getDataMovementId();
+        return 
addMovement(StorageMapper.INSTANCE.scpDataMovementToEntity(scpDataMovement));
     }
 
     public void updateScpDataMovement(SCPDataMovement scpDataMovement) throws 
AppCatalogException {
@@ -102,10 +109,7 @@ public class DataMovementRepository
     }
 
     public SCPDataMovement getSCPDataMovement(String dataMovementId) throws 
AppCatalogException {
-        StorageDataMovementEntity entity =
-                execute(entityManager -> 
entityManager.find(StorageDataMovementEntity.class, dataMovementId));
-        if (entity == null) return null;
-        return StorageMapper.INSTANCE.scpDataMovementToModel(entity);
+        return getMovement(dataMovementId, 
StorageMapper.INSTANCE::scpDataMovementToModel);
     }
 
     // --- UnicoreDataMovement CRUD ---
@@ -114,16 +118,11 @@ public class DataMovementRepository
         unicoreDataMovement = unicoreDataMovement.toBuilder()
                 .setDataMovementInterfaceId(AppCatalogUtils.getID("UNICORE"))
                 .build();
-        StorageDataMovementEntity entity = 
StorageMapper.INSTANCE.unicoreDataMovementToEntity(unicoreDataMovement);
-        execute(entityManager -> entityManager.merge(entity));
-        return entity.getDataMovementId();
+        return 
addMovement(StorageMapper.INSTANCE.unicoreDataMovementToEntity(unicoreDataMovement));
     }
 
     public UnicoreDataMovement getUNICOREDataMovement(String dataMovementId) 
throws AppCatalogException {
-        StorageDataMovementEntity entity =
-                execute(entityManager -> 
entityManager.find(StorageDataMovementEntity.class, dataMovementId));
-        if (entity == null) return null;
-        return StorageMapper.INSTANCE.unicoreDataMovementToModel(entity);
+        return getMovement(dataMovementId, 
StorageMapper.INSTANCE::unicoreDataMovementToModel);
     }
 
     // --- GridFTPDataMovement CRUD ---
@@ -132,16 +131,11 @@ public class DataMovementRepository
         gridFTPDataMovement = gridFTPDataMovement.toBuilder()
                 .setDataMovementInterfaceId(AppCatalogUtils.getID("GRIDFTP"))
                 .build();
-        StorageDataMovementEntity entity = 
StorageMapper.INSTANCE.gridFtpDataMovementToEntity(gridFTPDataMovement);
-        execute(entityManager -> entityManager.merge(entity));
-        return entity.getDataMovementId();
+        return 
addMovement(StorageMapper.INSTANCE.gridFtpDataMovementToEntity(gridFTPDataMovement));
     }
 
     public GridFTPDataMovement getGridFTPDataMovement(String dataMovementId) 
throws AppCatalogException {
-        StorageDataMovementEntity entity =
-                execute(entityManager -> 
entityManager.find(StorageDataMovementEntity.class, dataMovementId));
-        if (entity == null) return null;
-        return StorageMapper.INSTANCE.gridFtpDataMovementToModel(entity);
+        return getMovement(dataMovementId, 
StorageMapper.INSTANCE::gridFtpDataMovementToModel);
     }
 
     // --- Data movement interface removal ---
diff --git 
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/task/DataStagingTask.java
 
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/task/DataStagingTask.java
index 9194c0acbe..7ee0440eeb 100644
--- 
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/task/DataStagingTask.java
+++ 
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/task/DataStagingTask.java
@@ -104,32 +104,7 @@ public abstract class DataStagingTask extends AiravataTask 
{
      * Use input storage resource if configured. Otherwise, falls back to 
default gateway storage.
      */
     protected StorageResourceAdaptor getInputStorageAdaptor(AdaptorSupport 
adaptorSupport) throws TaskOnFailException {
-        String storageId = null;
-        try {
-            storageId = getTaskContext().getInputStorageResourceId();
-            logger.info("Fetching input storage adaptor for input storage 
resource {}", storageId);
-
-            if (getTaskContext().getProcessModel().getInputStorageResourceId() 
!= null
-                    && !getTaskContext()
-                            .getProcessModel()
-                            .getInputStorageResourceId()
-                            .trim()
-                            .isEmpty()) {
-
-                StoragePreference inputStoragePref = 
getTaskContext().getInputGatewayStorageResourcePreference();
-                return createStorageAdaptorFromPreference(adaptorSupport, 
storageId, inputStoragePref, "Input");
-            } else {
-                // Fall back to default storage resource configured
-                return getStorageAdaptor(adaptorSupport);
-            }
-        } catch (Exception e) {
-            logger.error(
-                    "Failed to obtain adaptor for input storage resource {} in 
task {}", storageId, getTaskId(), e);
-            throw new TaskOnFailException(
-                    "Failed to obtain adaptor for input storage resource " + 
storageId + " in task " + getTaskId(),
-                    false,
-                    e);
-        }
+        return getDirectionalStorageAdaptor(adaptorSupport, true);
     }
 
     /**
@@ -137,29 +112,42 @@ public abstract class DataStagingTask extends 
AiravataTask {
      * Use output storage resource if configured. Otherwise, falls back to 
default gateway storage.
      */
     protected StorageResourceAdaptor getOutputStorageAdaptor(AdaptorSupport 
adaptorSupport) throws TaskOnFailException {
+        return getDirectionalStorageAdaptor(adaptorSupport, false);
+    }
+
+    private StorageResourceAdaptor getDirectionalStorageAdaptor(AdaptorSupport 
adaptorSupport, boolean input)
+            throws TaskOnFailException {
+        String direction = input ? "input" : "output";
+        String label = input ? "Input" : "Output";
         String storageId = null;
         try {
-            storageId = getTaskContext().getOutputStorageResourceId();
-            logger.info("Fetching output storage adaptor for input storage 
resource {}", storageId);
-
-            if 
(getTaskContext().getProcessModel().getOutputStorageResourceId() != null
-                    && !getTaskContext()
-                            .getProcessModel()
-                            .getOutputStorageResourceId()
-                            .trim()
-                            .isEmpty()) {
-
-                StoragePreference outputStoragePref = 
getTaskContext().getOutputGatewayStorageResourcePreference();
-                return createStorageAdaptorFromPreference(adaptorSupport, 
storageId, outputStoragePref, "Output");
+            storageId = input
+                    ? getTaskContext().getInputStorageResourceId()
+                    : getTaskContext().getOutputStorageResourceId();
+            logger.info("Fetching {} storage adaptor for {} storage resource 
{}", direction, direction, storageId);
+
+            String processStorageId = input
+                    ? 
getTaskContext().getProcessModel().getInputStorageResourceId()
+                    : 
getTaskContext().getProcessModel().getOutputStorageResourceId();
+            if (processStorageId != null && 
!processStorageId.trim().isEmpty()) {
+                StoragePreference storagePref = input
+                        ? 
getTaskContext().getInputGatewayStorageResourcePreference()
+                        : 
getTaskContext().getOutputGatewayStorageResourcePreference();
+                return createStorageAdaptorFromPreference(adaptorSupport, 
storageId, storagePref, label);
             } else {
                 // Fall back to default storage resource configured
                 return getStorageAdaptor(adaptorSupport);
             }
         } catch (Exception e) {
             logger.error(
-                    "Failed to obtain adaptor for output storage resource {} 
in task {}", storageId, getTaskId(), e);
+                    "Failed to obtain adaptor for {} storage resource {} in 
task {}",
+                    direction,
+                    storageId,
+                    getTaskId(),
+                    e);
             throw new TaskOnFailException(
-                    "Failed to obtain adaptor for output storage resource " + 
storageId + " in task " + getTaskId(),
+                    "Failed to obtain adaptor for " + direction + " storage 
resource " + storageId + " in task "
+                            + getTaskId(),
                     false,
                     e);
         }

Reply via email to