This example is based on the code in the OvfExporterHelper.java sample file. The sample resource is located in the following vCloud Suite SDK for Javadirectory, client/samples/java/com/vmware/vcloud/suite/samples/vapi/helpers.
This example uses the steps that are described in the Download Files to a Local System from a Library Item procedure.
import com.vmware.content.library.item.DownloadSession; import com.vmware.content.library.item.downloadsession.File; import com.vmware.content.library.item.DownloadSessionModel; ... // Access the DownloadSession service. DownloadSession downloadSessionService = serviceManager.getVapiService(DownloadSession.class); // Create a new download session model. DownloadSessionModel downloadSessionModel = new DownloadSessionModel(); downloadSessionModel.setLibraryItemId(libItem.getId()); String downloadSessionId = downloadSessionService.create(UUID.randomUUID().toString(), downloadSessionModel); // Access the File service and retrieve the files you want to export. File downloadFileService = serviceManager.getVapiService(File.class); List<FileTypes.Info> downloadFileInfos = downloadFileService.list(downloadSessionId); for (FileTypes.Info downloadFileInfo : downloadFileInfos) { // Make sure all files are in the prepared state before you precede with the downloading operation. downloadFileService.prepare(downloadSessionId, downloadFileInfo.getName(), EndpointType.HTTPS); long timeOut = 360; Long endTime = System.currentTimeMillis() + timeOut * 1000; try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println(e); } FileTypes.PrepareStatus expectedStatus = com.vmware.content.library.item.downloadsession.File.PrepareStatus.PREPARED; downloadFileInfo = downloadFileService.get(downloadSessionId, downloadFileInfo.getName()); FileTypes.PrepareStatus currentStatus = downloadFileInfo.getStatus(); if (currentStatus == expectedStatus) { // When the files are prepared, you can retrieve the download information for each file. downloadFileInfo = downloadFileService.get(downloadSessionId, downloadFileInfo.getName()); try { URI downloadUri = downloadFileInfo.getDownloadEndpoint().getUri(); String downloadUrl = downloadUri.toURL().toString(); // Execute an HTTP GET request and pass the download endpoints of the files. HttpClient httpClient = new HttpClient(true); InputStream inputStream = httpClient.downloadFile(downloadUrl); String fileNameDownload = downloadFileInfo.getName(); File tmpDir = new java.io.File("tmp"); tmpDir.mkdir(); String fullPath = tmpDir.getAbsolutePath() + System.getProperty("file.separator") + fileNameDownload; // Copy the files to the directory on your machine. Files.copy(inputStream, Paths.get(fullPath),StandardCopyOption.REPLACE_EXISTING); } catch (MalformedURLException e) { System.out.println("Failed to download due to IOException!" + e); throw new RuntimeException("Failed to download due to IOException!", e); } catch (IOException e) { System.out.println("IO exception during download" + e); throw new RuntimeException("Failed to download due to IOException!", e); // Delete the download session after all files are downloaded. } finally { downloadFileService.delete(downloadSessionId); } } else { while (endTime > System.currentTimeMillis()) { downloadFileInfo = downloadFileService.get(downloadSessionId, downloadFileInfo.getName()); currentStatus = downloadFileInfo.getStatus(); if (currentStatus == expectedStatus) { return; } else if (currentStatus == com.vmware.content.library.item.downloadsession.File.PrepareStatus.ERROR) { System.out.println("DownloadSession Info : " + downloadSessionService.get(downloadSessionId)); throw new RuntimeException("Error while waiting for download file status to be PREPARED..."); } } } }