in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java [93:155]
public void fetchResource(ResourceFetchRequest request, StreamObserver<ResourceFetchResponse> responseObserver) {
try {
AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();
String resourceId = request.getResourceId();
boolean access = CustosUtils.userHasAccess(custosClientProvider, callUser.getTenantId(),
callUser.getUsername(), resourceId,
new String[]{SharingConstants.PERMISSION_TYPE_VIEWER, SharingConstants.PERMISSION_TYPE_EDITOR, SharingConstants.PERMISSION_TYPE_OWNER});
if (access) {
try (SharingManagementClient sharingManagementClient = custosClientProvider.getSharingManagementClient()) {
Entity sharedEntity = Entity
.newBuilder()
.setId(resourceId)
.build();
Entity entity = sharingManagementClient
.getEntity(callUser.getTenantId(), sharedEntity);
Optional<Resource> resourceOptional = resourceRepository.findById(resourceId);
if (resourceOptional.isPresent()) {
Resource persistedRes = resourceOptional.get();
GenericResource resource = ResourceMapper.map(resourceOptional.get(), entity);
while (persistedRes.getParentResourceId() != null && !persistedRes.getParentResourceId().isEmpty()) {
Optional<Resource> perResourceOptional = resourceRepository.findById(persistedRes.getParentResourceId());
if (perResourceOptional.isPresent()) {
persistedRes = perResourceOptional.get();
}
}
if (persistedRes.getResourceType().equals(StorageConstants.STORAGE_LABEL)) {
AnyStorage storage = StorageMapper.map(persistedRes);
if (storage.getSshStorage().isInitialized()) {
resource = resource.toBuilder().setSshStorage(storage.getSshStorage()).build();
} else {
resource = resource.toBuilder().setS3Storage(storage.getS3Storage()).build();
}
}
ResourceFetchResponse response = ResourceFetchResponse
.newBuilder()
.setResource(resource)
.build();
responseObserver.onNext(response);
responseObserver.onCompleted();
return;
}
}
}
//TODO: ERROR
} catch (Exception ex) {
logger.error("Error occurred while fetching child resource {}", request.getResourceId(), ex);
String msg = "Error occurred while fetching child resource with id" + request.getResourceId();
responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
}
}