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