Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
199e5cf
HPCDATAMGM-2097: Backend implementation of single dataObject registra…
saradachintala Nov 20, 2025
fdf5794
Merge branch 'releases/3.23.0' into features/HPCDATAMGM-2097-version2
saradachintala Feb 2, 2026
487e485
Merge branch 'releases/3.23.0' into features/HPCDATAMGM-2097-version2
saradachintala Feb 2, 2026
7d5b140
Upgrade assertj library
saradachintala Feb 3, 2026
a3bc9d4
HPCDATAMGM-2097: Completely clear the metadata before deleting the IR…
saradachintala Feb 11, 2026
8e3cd56
Merge branch 'releases/3.24.0' into features/HPCDATAMGM-2097-version2
saradachintala Mar 5, 2026
792bc52
HPCDATAMGM-2097: Add removal of dataObject in the BUS schedular layer…
saradachintala Mar 5, 2026
cd39a34
HPCDATAMGM-2097: Refactor downloadDataObjectFromExternalSource
saradachintala Mar 12, 2026
afd030a
HPCDATAMGM-2097, HPCDATAMGM-2168: Add External Download API for colle…
saradachintala Mar 16, 2026
0af1db3
HPCDATAMGM-2097, HPCDATAMGM-2168: Added some refactoring for shared c…
saradachintala Mar 17, 2026
b47b0a4
HPCDATAMGM-2097, HPCDATAMGM-2168: Remove the unecessary setting of da…
saradachintala Mar 17, 2026
b6cbd3f
Potential fix for pull request finding
saradachintala Mar 17, 2026
4777374
Potential fix for pull request finding
saradachintala Mar 17, 2026
bc0bfc7
Potential fix for pull request finding
saradachintala Mar 17, 2026
fd2af6f
Potential fix for pull request finding
saradachintala Mar 17, 2026
76d144e
Potential fix for pull request finding
saradachintala Mar 17, 2026
c6a482a
Potential fix for pull request finding
saradachintala Mar 17, 2026
4ecbf0b
Potential fix for pull request finding
saradachintala Mar 17, 2026
ab3b4b3
Potential fix for pull request finding
saradachintala Mar 17, 2026
e3d7c79
Potential fix for pull request finding
saradachintala Mar 17, 2026
b496c09
Potential fix for pull request finding
saradachintala Mar 17, 2026
5809b60
Potential fix for pull request finding
saradachintala Mar 17, 2026
6a51fc4
Potential fix for pull request finding
saradachintala Mar 17, 2026
fe4ccb0
Potential fix for pull request finding
saradachintala Mar 17, 2026
d97a0ad
HPCDATAMGM-2097, HPCDATAMGM-2168, include the import of Set - which w…
saradachintala Mar 18, 2026
d4b8f02
HPCDATAMGM-2097, HPCDATAMGM-2168, restore the previous code as Copilo…
saradachintala Mar 18, 2026
0fd3ccb
HPCDATAMGM-2097, HPCDATAMGM-2168, Add check whether external_storage …
saradachintala Mar 18, 2026
f3dc367
HPCDATAMGM-2097, HPCDATAMGM-2168: Fix the code modified by Copilot in…
saradachintala Mar 18, 2026
02884f2
HPCDATAMGM:2092, HPCDATAMGM-2168: Change findDataTransferConfiguratio…
saradachintala Mar 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import gov.nih.nci.hpc.domain.model.HpcBulkDataObjectRegistrationStatus;
import gov.nih.nci.hpc.domain.model.HpcBulkDataObjectRegistrationTask;
import gov.nih.nci.hpc.domain.model.HpcDataManagementConfiguration;
import gov.nih.nci.hpc.domain.model.HpcDataTransferConfiguration;
import gov.nih.nci.hpc.domain.model.HpcDataObjectRegistrationRequest;
import gov.nih.nci.hpc.domain.model.HpcDataObjectRegistrationResult;
import gov.nih.nci.hpc.domain.model.HpcDataTransferConfiguration;
Expand Down Expand Up @@ -594,6 +595,14 @@ public List<HpcBulkDataObjectRegistrationResult> getRegistrationResults(String u
*/
public HpcDataManagementConfiguration getDataManagementConfiguration(String id);

/**
* Returns HpcDataTransferConfiguration for the given external path
*
* @return HpcDataTransferConfiguration
*/

public HpcDataTransferConfiguration findDataTransferConfigurationForExternalPath(String path) throws HpcException;

/**
* Add a data object registration request result to the DB.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public HpcDataObjectDownloadResponse downloadDataObject(String path, HpcFileLoca
HpcSynchronousDownloadFilter synchronousDownloadFilter, HpcDataTransferType dataTransferType,
String configurationId, String s3ArchiveConfigurationId, String retryTaskId, String userId,
String retryUserId, boolean completionEvent, String collectionDownloadTaskId, long size,
HpcDataTransferUploadStatus downloadDataObject, HpcDeepArchiveStatus deepArchiveStatus) throws HpcException;
HpcDataTransferUploadStatus downloadDataObject, HpcDeepArchiveStatus deepArchiveStatus, boolean externalArchiveFlag) throws HpcException;

/**
* Generate a (pre-signed) download URL for a data object file.
Expand Down Expand Up @@ -601,6 +601,15 @@ public void completeSynchronousDataObjectDownloadTask(HpcDownloadTaskResult task
public boolean markProcessedDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTask,
HpcDataTransferType dataTransferType, boolean inProcess) throws HpcException;

/**
* Update a data object download task.
*
* @param downloadTask The download task to update
* @throws HpcException on service failure.
*/
public void changeDataObjectDownloadTaskExternalStatus(HpcDataObjectDownloadTask downloadTask)
throws HpcException;
Comment thread
saradachintala marked this conversation as resolved.

/**
* Update a data object download task. % Complete is calculated and any change
* on the task object will be persisted.
Expand Down Expand Up @@ -644,6 +653,8 @@ public boolean updateDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTa
* used in the destination path,
* otherwise just the object name
* will be used.
* @param externalArchiveFlag Indicates if the collection contains data objects in an external archive.
*
* @return The submitted collection download task.
* @throws HpcException on service failure.
*/
Expand All @@ -653,7 +664,7 @@ public HpcCollectionDownloadTask downloadCollection(String path,
HpcGoogleDownloadDestination googleCloudStorageDownloadDestination,
HpcAsperaDownloadDestination asperaDownloadDestination, HpcBoxDownloadDestination boxDownloadDestination,
String userId, String configurationId, boolean appendPathToDownloadDestination,
boolean appendCollectionNameToDownloadDestination) throws HpcException;
boolean appendCollectionNameToDownloadDestination, boolean externalArchiveFlag) throws HpcException;

/**
* Submit a request to download collections.
Expand Down Expand Up @@ -701,7 +712,7 @@ public HpcCollectionDownloadTask downloadCollections(List<String> collectionPath
HpcGoogleDownloadDestination googleCloudStorageDownloadDestination,
HpcAsperaDownloadDestination asperaDownloadDestination, HpcBoxDownloadDestination boxDownloadDestination,
String userId, String configurationId, boolean appendPathToDownloadDestination,
boolean appendCollectionNameToDownloadDestination) throws HpcException;
boolean appendCollectionNameToDownloadDestination, boolean externalArchiveFlag) throws HpcException;

/**
* Submit a request to download data objects.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

Expand Down Expand Up @@ -100,6 +101,15 @@ public Set<String> getDocs() {
return docs;
}

/**
* Get all supported S3 Archive configurations.
*
* @return A collection of all supported S3 Archive configurations.
*/
public Collection<HpcDataTransferConfiguration> getS3ArchiveConfigurations() {
return s3ArchiveConfigurations.values();
}

/**
* Get configuration ID by base path.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
Expand Down Expand Up @@ -70,6 +72,7 @@
import gov.nih.nci.hpc.domain.model.HpcBulkDataObjectRegistrationStatus;
import gov.nih.nci.hpc.domain.model.HpcBulkDataObjectRegistrationTask;
import gov.nih.nci.hpc.domain.model.HpcDataManagementConfiguration;
import gov.nih.nci.hpc.domain.model.HpcDataTransferConfiguration;
import gov.nih.nci.hpc.domain.model.HpcDataObjectRegistrationRequest;
import gov.nih.nci.hpc.domain.model.HpcDataObjectRegistrationResult;
import gov.nih.nci.hpc.domain.model.HpcDataTransferConfiguration;
Expand Down Expand Up @@ -1179,6 +1182,22 @@ public List<HpcDataManagementConfiguration> getDataManagementConfigurations() {
return new ArrayList<>(dataManagementConfigurationLocator.values());
}

@Override
public HpcDataTransferConfiguration findDataTransferConfigurationForExternalPath(String path) throws HpcException {
HpcDataTransferConfiguration dataTransferConfiguration = null;
for (HpcDataManagementConfiguration dataManagementConfiguration : dataManagementConfigurationLocator.values()) {
String dataTransferConfigurationId = dataManagementConfiguration.getS3UploadConfigurationId();
if (dataTransferConfigurationId != null) {
HpcDataTransferConfiguration dataTransferConfigurationCandidate = dataManagementConfigurationLocator.getS3ArchiveConfiguration(dataTransferConfigurationId);
if (dataTransferConfigurationCandidate != null && dataTransferConfigurationCandidate.getPosixPath() != null && path.startsWith(dataTransferConfigurationCandidate.getPosixPath())) {
dataTransferConfiguration = dataTransferConfigurationCandidate;
break;
}
}
}
return dataTransferConfiguration;
}

@Override
public String findDataManagementConfigurationId(String path) {
if (StringUtils.isEmpty(path)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import gov.nih.nci.hpc.dao.HpcDataDownloadDAO;
import gov.nih.nci.hpc.dao.HpcDataRegistrationDAO;
import gov.nih.nci.hpc.dao.HpcGlobusTransferTaskDAO;
import gov.nih.nci.hpc.domain.datamanagement.HpcDataObject;
import gov.nih.nci.hpc.domain.datamanagement.HpcPathAttributes;
import gov.nih.nci.hpc.domain.datamanagement.HpcPathPermissions;
import gov.nih.nci.hpc.domain.datatransfer.HpcAddArchiveObjectMetadataResponse;
Expand Down Expand Up @@ -96,6 +97,7 @@
import gov.nih.nci.hpc.domain.error.HpcDomainValidationResult;
import gov.nih.nci.hpc.domain.error.HpcErrorType;
import gov.nih.nci.hpc.domain.error.HpcRequestRejectReason;
import gov.nih.nci.hpc.domain.metadata.HpcMetadataEntries;
import gov.nih.nci.hpc.domain.metadata.HpcMetadataEntry;
import gov.nih.nci.hpc.domain.model.HpcDataObjectUploadRequest;
import gov.nih.nci.hpc.domain.model.HpcDataObjectUploadResponse;
Expand Down Expand Up @@ -572,7 +574,7 @@ public HpcDataObjectDownloadResponse downloadDataObject(String path, HpcFileLoca
HpcSynchronousDownloadFilter synchronousDownloadFilter, HpcDataTransferType dataTransferType,
String configurationId, String s3ArchiveConfigurationId, String retryTaskId, String userId,
String retryUserId, boolean completionEvent, String collectionDownloadTaskId, long size,
HpcDataTransferUploadStatus dataTransferStatus, HpcDeepArchiveStatus deepArchiveStatus)
HpcDataTransferUploadStatus dataTransferStatus, HpcDeepArchiveStatus deepArchiveStatus, boolean externalArchiveFlag)
throws HpcException {
// Input Validation.
if (dataTransferType == null || !isValidFileLocation(archiveLocation)) {
Expand Down Expand Up @@ -603,6 +605,7 @@ public HpcDataObjectDownloadResponse downloadDataObject(String path, HpcFileLoca
downloadRequest.setCompletionEvent(completionEvent);
downloadRequest.setCollectionDownloadTaskId(collectionDownloadTaskId);
downloadRequest.setSize(size);
downloadRequest.setExternalArchiveFlag(externalArchiveFlag);

// Create a download response.
HpcDataObjectDownloadResponse response = new HpcDataObjectDownloadResponse();
Expand Down Expand Up @@ -1130,7 +1133,6 @@ public boolean getCollectionDownloadTaskCancellationRequested(String taskId) thr
@Override
public HpcDownloadTaskResult completeDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTask,
HpcDownloadResult result, String message, Calendar completed, long bytesTransferred) throws HpcException {

// Input validation
if (downloadTask == null) {
throw new HpcException("Invalid data object download task", HpcErrorType.INVALID_REQUEST_INPUT);
Expand Down Expand Up @@ -1488,13 +1490,16 @@ public void stageHyperfileDataObjectDownloadTask(HpcDataObjectDownloadTask downl

@Override
public void resetDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTask) throws HpcException {

logger.debug(
"download task: [taskId={}] - resetDataObjectDownloadTask called. Setting in-process=false [transfer-type={}, server-id={}]",
downloadTask.getId(), downloadTask.getDataTransferType(),
HpcDataTransferType.S_3.equals(downloadTask.getDataTransferType()) ? s3DownloadTaskServerId : null);

downloadTask.setDataTransferStatus(HpcDataTransferDownloadStatus.RECEIVED);
if(downloadTask.getExternalArchiveFlag()) {
downloadTask.setDataTransferStatus(HpcDataTransferDownloadStatus.RECEIVED_EXTERNAL);
} else {
downloadTask.setDataTransferStatus(HpcDataTransferDownloadStatus.RECEIVED);
}
Comment on lines +1498 to +1502
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will add the test after studying the test code.

downloadTask.setPercentComplete(0);
downloadTask.setInProcess(false);
downloadTask.setS3DownloadTaskServerId(null);
Expand All @@ -1515,11 +1520,24 @@ public void resetDataObjectDownloadTasksInProcess() throws HpcException {
dataDownloadDAO.resetDataObjectDownloadTaskInProcess(s3DownloadTaskServerId);
}

@Override
public void changeDataObjectDownloadTaskExternalStatus(HpcDataObjectDownloadTask downloadTask) throws HpcException {
if(downloadTask.getDataTransferStatus().equals(HpcDataTransferDownloadStatus.RECEIVED_EXTERNAL)) {
downloadTask.setDataTransferStatus(HpcDataTransferDownloadStatus.RECEIVED);
downloadTask.setExternalArchiveFlag(true);
}
dataDownloadDAO.updateDataObjectDownloadTask(downloadTask);
//return downloadTask;
}

@Override
public boolean markProcessedDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTask,
HpcDataTransferType dataTransferType, boolean inProcess) throws HpcException {
// Only set in-process to true if this task in a RECEIVED status, and the
// in-process not already true.
if(downloadTask.getDataTransferStatus().equals(HpcDataTransferDownloadStatus.RECEIVED_EXTERNAL)) {
return false;
}
boolean updated = true;
String serverId = HpcDataTransferType.S_3.equals(dataTransferType) ? s3DownloadTaskServerId : null;

Expand Down Expand Up @@ -1593,7 +1611,6 @@ public boolean updateDataObjectDownloadTask(HpcDataObjectDownloadTask downloadTa
logger.info("download task: [taskId={}] - % complete - {} [transfer-type={}, destination-type={}]",
downloadTask.getId(), percentComplete, downloadTask.getDataTransferType(),
downloadTask.getDestinationType());

return dataDownloadDAO.updateDataObjectDownloadTask(downloadTask);
}

Expand All @@ -1604,7 +1621,7 @@ public HpcCollectionDownloadTask downloadCollection(String path,
HpcGoogleDownloadDestination googleCloudStorageDownloadDestination,
HpcAsperaDownloadDestination asperaDownloadDestination, HpcBoxDownloadDestination boxDownloadDestination,
String userId, String configurationId, boolean appendPathToDownloadDestination,
boolean appendCollectionNameToDownloadDestination) throws HpcException {
boolean appendCollectionNameToDownloadDestination, boolean externalArchiveFlag) throws HpcException {

// Validate the download destination.
validateDownloadDestination(globusDownloadDestination, s3DownloadDestination, googleDriveDownloadDestination,
Expand Down Expand Up @@ -1632,6 +1649,11 @@ public HpcCollectionDownloadTask downloadCollection(String path,
downloadTask.setDoc(dataManagementService.getDataManagementConfiguration(configurationId).getDoc());
downloadTask.setAppendPathToDownloadDestination(appendPathToDownloadDestination);
downloadTask.setAppendCollectionNameToDownloadDestination(appendCollectionNameToDownloadDestination);
if(externalArchiveFlag) {
downloadTask.setStatus(HpcCollectionDownloadTaskStatus.RECEIVED_EXTERNAL);
} else {
downloadTask.setStatus(HpcCollectionDownloadTaskStatus.RECEIVED);
}

// Persist the request.
dataDownloadDAO.upsertCollectionDownloadTask(downloadTask);
Expand All @@ -1646,7 +1668,7 @@ public HpcCollectionDownloadTask downloadCollections(List<String> collectionPath
HpcGoogleDownloadDestination googleCloudStorageDownloadDestination,
HpcAsperaDownloadDestination asperaDownloadDestination, HpcBoxDownloadDestination boxDownloadDestination,
String userId, String configurationId, boolean appendPathToDownloadDestination,
boolean appendCollectionNameToDownloadDestination) throws HpcException {
boolean appendCollectionNameToDownloadDestination, boolean externalArchiveFlag) throws HpcException {
// Validate the download destination.
validateDownloadDestination(globusDownloadDestination, s3DownloadDestination, googleDriveDownloadDestination,
googleCloudStorageDownloadDestination, asperaDownloadDestination, boxDownloadDestination, null,
Expand All @@ -1669,6 +1691,11 @@ public HpcCollectionDownloadTask downloadCollections(List<String> collectionPath
downloadTask.setAppendPathToDownloadDestination(appendPathToDownloadDestination);
downloadTask.setAppendCollectionNameToDownloadDestination(appendCollectionNameToDownloadDestination);
downloadTask.setDoc(dataManagementService.getDataManagementConfiguration(configurationId).getDoc());
if(externalArchiveFlag) {
downloadTask.setStatus(HpcCollectionDownloadTaskStatus.RECEIVED_EXTERNAL);
} else {
downloadTask.setStatus(HpcCollectionDownloadTaskStatus.RECEIVED);
}

// Persist the request.
dataDownloadDAO.upsertCollectionDownloadTask(downloadTask);
Expand Down Expand Up @@ -4310,7 +4337,6 @@ private void createDownloadTask(HpcDataObjectDownloadRequest firstHopDownloadReq
HpcFileLocation secondHopArchiveLocation, HpcGlobusDownloadDestination secondHopGlobusDestination,
HpcDataTransferDownloadStatus dataTransferDownloadStatus, HpcDataTransferType destinationType)
throws HpcException {

downloadTask.setDataTransferType(HpcDataTransferType.S_3);
downloadTask.setDataTransferStatus(dataTransferDownloadStatus);
downloadTask.setDownloadFilePath(sourceFile.getAbsolutePath());
Expand All @@ -4330,6 +4356,7 @@ private void createDownloadTask(HpcDataObjectDownloadRequest firstHopDownloadReq
downloadTask.setPercentComplete(0);
downloadTask.setSize(firstHopDownloadRequest.getSize());
downloadTask.setFirstHopRetried(false);
downloadTask.setExternalArchiveFlag(firstHopDownloadRequest.getExternalArchiveFlag());
downloadTask.setS3DownloadTaskServerId(
dataTransferDownloadStatus.equals(HpcDataTransferDownloadStatus.IN_PROGRESS)
? s3DownloadTaskServerId
Expand Down Expand Up @@ -4374,7 +4401,7 @@ private void updateDownloadTask(HpcDataObjectDownloadTask downloadTask,
this.downloadTask.setFirstHopRetried(downloadTask.getFirstHopRetried());
this.downloadTask.setRetryTaskId(downloadTask.getRetryTaskId());
this.downloadTask.setRetryUserId(downloadTask.getRetryUserId());

this.downloadTask.setExternalArchiveFlag(downloadTask.getExternalArchiveFlag());
dataDownloadDAO.updateDataObjectDownloadTask(this.downloadTask);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ public void testDownloadDataObjectNullDataTransferType() throws HpcException {
expectedException.expect(HpcException.class);
expectedException.expectMessage("Invalid data transfer request");
dataTransferService.downloadDataObject("", null, null, null, null, null, null, null, null, null, null, null, "",
"", "", false, null, 0L, HpcDataTransferUploadStatus.ARCHIVED, null);
"", "", false, null, 0L, HpcDataTransferUploadStatus.ARCHIVED, null, false);
}

/**
Expand All @@ -260,7 +260,7 @@ public void testDownloadDataObjectInvalidArchiveLocation() throws HpcException {
expectedException.expect(HpcException.class);
expectedException.expectMessage("Invalid data transfer request");
dataTransferService.downloadDataObject("", new HpcFileLocation(), null, null, null, null, null, null, null,
null, null, null, "", "", "", false, null, 0L, HpcDataTransferUploadStatus.ARCHIVED, null);
null, null, null, "", "", "", false, null, 0L, HpcDataTransferUploadStatus.ARCHIVED, null, false);
}

/**
Expand Down Expand Up @@ -319,7 +319,7 @@ public void testS3DownloadDataObject() throws HpcException {
HpcDataObjectDownloadResponse downloadResponse = dataTransferService.downloadDataObject("/test/path",
archiveLocation, null, s3loadDestination, null, null, null, null, null, HpcDataTransferType.S_3,
"testConfigId", "", null, "testUserId", null, false, null, 0L, HpcDataTransferUploadStatus.ARCHIVED,
null);
null, false);

// Assert expected result.
assertNull(downloadResponse.getDownloadTaskId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,17 @@ public HpcCollectionDTO getCollectionChildrenWithPaging(String path, Integer off
public HpcCollectionDownloadResponseDTO downloadCollection(String path, HpcDownloadRequestDTO downloadRequest)
throws HpcException;

/**
* Download a collection tree.
*
* @param path The collection path.
* @param downloadRequest The download request DTO.
* @return Download Response DTO.
* @throws HpcException on service failure.
*/
public HpcCollectionDownloadResponseDTO downloadCollectionFromExternalSource(String path, HpcDownloadRequestDTO downloadRequest)
throws HpcException;

/**
* Download data objects or collections. Note: API doesn't support mixed, so
* user expected to provide a list of data objects or a list of collections, not
Expand All @@ -153,6 +164,18 @@ public HpcCollectionDownloadResponseDTO downloadCollection(String path, HpcDownl
public HpcBulkDataObjectDownloadResponseDTO downloadDataObjectsOrCollections(
HpcBulkDataObjectDownloadRequestDTO downloadRequest) throws HpcException;

/**
* Download data objects or collections from external source. Note: API doesn't support mixed, so
* user expected to provide a list of data objects or a list of collections, not
* both.
*
* @param downloadRequest The download request DTO.
* @return Download Response DTO.
* @throws HpcException on service failure.
*/
public HpcBulkDataObjectDownloadResponseDTO downloadDataObjectsOrCollectionsFromExternalSource(
HpcBulkDataObjectDownloadRequestDTO downloadRequest) throws HpcException;

/**
* Get collection download task status.
*
Expand Down Expand Up @@ -455,6 +478,19 @@ public gov.nih.nci.hpc.dto.datamanagement.v2.HpcDataObjectDTO getDataObject(Stri
public HpcDataObjectDownloadResponseDTO downloadDataObject(String path, HpcDownloadRequestDTO downloadRequest)
throws HpcException;

/**
* Download Data Object from External Source. In this overloaded method, the request invoker will be
* notified (if subscribed) when the download is complete. To specify a
* different user-id and turn off notification, use the other overloaded method.
*
* @param path The data object path.
* @param downloadRequest The download request DTO.
* @return Download ResponseDTO
* @throws HpcException on service failure.
*/
public HpcDataObjectDownloadResponseDTO downloadDataObjectFromExternalSource(String path, HpcDownloadRequestDTO downloadRequest)
throws HpcException;

/**
* Download Data Object.
*
Expand Down
Loading