in transport/swift-transport/src/main/java/org/apache/airavata/mft/transport/swift/SwiftMetadataCollector.java [50:108]
public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {
checkInitialized();
SwiftApi swiftApi = SwiftUtil.getInstance().leaseSwiftApi(swiftSecret);
try {
ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();
if ("".equals(resourcePath) && "".equals(swiftStorage.getContainer())) {
FluentIterable<Container> containers = swiftApi.getContainerApi(swiftStorage.getRegion()).list();
DirectoryMetadata.Builder parentDir = DirectoryMetadata.newBuilder();
parentDir.setResourcePath("");
parentDir.setFriendlyName("");
containers.forEach(container -> {
DirectoryMetadata.Builder bucketDir = DirectoryMetadata.newBuilder();
bucketDir.setFriendlyName(container.getName());
bucketDir.setResourcePath(container.getName());
parentDir.addDirectories(bucketDir);
});
resourceBuilder.setDirectory(parentDir);
} else {
ObjectApi objectApi = swiftApi.getObjectApi(swiftStorage.getRegion(), swiftStorage.getContainer());
if ("".equals(resourcePath)) {
DirectoryMetadata.Builder rootDirBuilder = DirectoryMetadata.newBuilder();
ObjectList objectList = objectApi.list();
objectList.forEach(swiftObject -> {
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setFriendlyName(swiftObject.getName());
fileBuilder.setResourcePath(swiftObject.getName());
fileBuilder.setCreatedTime(swiftObject.getLastModified().getTime());
fileBuilder.setUpdateTime(swiftObject.getLastModified().getTime());
fileBuilder.setResourceSize(swiftObject.getPayload().getContentMetadata().getContentLength());
rootDirBuilder.addFiles(fileBuilder);
});
resourceBuilder.setDirectory(rootDirBuilder);
} else {
SwiftObject swiftObject = objectApi.get(resourcePath);
if (swiftObject == null) {
resourceBuilder.setError(MetadataFetchError.NOT_FOUND);
return resourceBuilder.build();
}
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setFriendlyName(swiftObject.getName());
fileBuilder.setResourcePath(swiftObject.getName());
fileBuilder.setCreatedTime(swiftObject.getLastModified().getTime());
fileBuilder.setUpdateTime(swiftObject.getLastModified().getTime());
fileBuilder.setResourceSize(swiftObject.getPayload().getContentMetadata().getContentLength());
resourceBuilder.setFile(fileBuilder);
}
}
return resourceBuilder.build();
} finally{
//swiftApi.close();
}
}