use of javax.ws.rs.core.StreamingOutput in project coprhd-controller by CoprHD.
the class OrderService method downloadOrders.
/**
* Get log data from the specified virtual machines that are filtered, merged,
* and sorted based on the passed request parameters and streams the log
* messages back to the client as JSON formatted strings.
*
* @brief Show logs from all or specified virtual machine
* @param startTimeStr The start datetime of the desired time window. Value is
* inclusive.
* Allowed values: "yyyy-MM-dd_HH:mm:ss" formatted date or
* datetime in ms.
* Default: Set to yesterday same time
* @param endTimeStr The end datetime of the desired time window. Value is
* inclusive.
* Allowed values: "yyyy-MM-dd_HH:mm:ss" formatted date or
* datetime in ms.
* @param tenantIDsStr a list of tenant IDs separated by ','
* @param orderIDsStr a list of order IDs separated by ','
* @prereq one of tenantIDsStr and orderIDsStr should be empty
* @return A reference to the StreamingOutput to which the log data is
* written.
* @throws WebApplicationException When an invalid request is made.
*/
@GET
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.SYSTEM_MONITOR, Role.SECURITY_ADMIN })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
@Path("/download")
public Response downloadOrders(@DefaultValue("") @QueryParam(SearchConstants.START_TIME_PARAM) String startTimeStr, @DefaultValue("") @QueryParam(SearchConstants.END_TIME_PARAM) String endTimeStr, @DefaultValue("") @QueryParam(SearchConstants.TENANT_IDS_PARAM) String tenantIDsStr, @DefaultValue("") @QueryParam(SearchConstants.ORDER_STATUS_PARAM2) String orderStatusStr, @DefaultValue("") @QueryParam(SearchConstants.ORDER_IDS) String orderIDsStr) throws Exception {
if (tenantIDsStr.isEmpty() && orderIDsStr.isEmpty()) {
InvalidParameterException cause = new InvalidParameterException("Both tenant and order IDs are empty");
throw APIException.badRequests.invalidParameterWithCause(SearchConstants.TENANT_ID_PARAM, tenantIDsStr, cause);
}
final long startTimeInMS = getTime(startTimeStr, 0);
final long endTimeInMS = getTime(endTimeStr, System.currentTimeMillis());
if (startTimeInMS > endTimeInMS) {
throw APIException.badRequests.endTimeBeforeStartTime(startTimeStr, endTimeStr);
}
OrderStatus orderStatus = getOrderStatus(orderStatusStr, false);
if (isJobRunning()) {
throw APIException.badRequests.cannotExecuteOperationWhilePendingTask("Deleting/Downloading orders");
}
final List<URI> tids = toIDs(SearchConstants.TENANT_IDS_PARAM, tenantIDsStr);
StorageOSUser user = getUserFromContext();
URI tid = URI.create(user.getTenantId());
URI uid = URI.create(user.getName());
final OrderJobStatus status = new OrderJobStatus(OrderServiceJob.JobType.DOWNLOAD_ORDER, startTimeInMS, endTimeInMS, tids, tid, uid, orderStatus);
List<URI> orderIDs = toIDs(SearchConstants.ORDER_IDS, orderIDsStr);
status.setTotal(orderIDs.size());
if (!orderIDs.isEmpty()) {
status.setStartTime(0);
status.setEndTime(0);
}
try {
saveJobInfo(status);
} catch (Exception e) {
log.error("Failed to save job info e=", e);
throw APIException.internalServerErrors.getLockFailed();
}
StreamingOutput out = new StreamingOutput() {
@Override
public void write(OutputStream outputStream) {
exportOrders(tids, orderIDsStr, startTimeInMS, endTimeInMS, outputStream, status);
}
};
return Response.ok(out).build();
}
use of javax.ws.rs.core.StreamingOutput in project pentaho-platform by pentaho.
the class FileResource method doGetDirAsZip.
/**
* @param repositoryFile
* @return
*/
public Response doGetDirAsZip(RepositoryFile repositoryFile) {
String path = repositoryFile.getPath();
final InputStream is;
try {
Exporter exporter = getExporter();
exporter.setRepoPath(path);
exporter.setRepoWs(repoWs);
File zipFile = exporter.doExportAsZip(repositoryFile);
is = getFileInputStream(zipFile);
} catch (Exception e) {
return buildServerErrorResponse(e.toString());
}
StreamingOutput streamingOutput = getStreamingOutput(is);
return buildOkResponse(streamingOutput, APPLICATION_ZIP);
}
use of javax.ws.rs.core.StreamingOutput in project pentaho-platform by pentaho.
the class FileServiceIT method testDoGetFileAsInline.
@Test
public void testDoGetFileAsInline() throws FileNotFoundException {
/*
* TEST 1
*/
doReturn(true).when(fileService).isPath(nullable(String.class));
doReturn(true).when(fileService).isPathValid(nullable(String.class));
RepositoryDownloadWhitelist mockWhiteList = mock(RepositoryDownloadWhitelist.class);
doReturn(mockWhiteList).when(fileService).getWhitelist();
doReturn(true).when(mockWhiteList).accept(nullable(String.class));
RepositoryFile mockRepoFile = mock(RepositoryFile.class);
doReturn(mockRepoFile).when(fileService.repository).getFile(nullable(String.class));
SimpleRepositoryFileData mockData = mock(SimpleRepositoryFileData.class);
doReturn(mockData).when(fileService.repository).getDataForRead(any(Serializable.class), any(Class.class));
InputStream mockInputStream = mock(InputStream.class);
doReturn(mockInputStream).when(mockData).getInputStream();
StreamingOutput mockStreamingOutput = mock(StreamingOutput.class);
doReturn(mockStreamingOutput).when(fileService).getStreamingOutput(mockInputStream);
FileService.RepositoryFileToStreamWrapper wrapper = fileService.doGetFileAsInline("test");
verify(fileService.repository, times(1)).getFile(nullable(String.class));
verify(mockWhiteList, times(1)).accept(nullable(String.class));
verify(fileService, times(2)).getRepository();
verify(fileService.repository, times(1)).getDataForRead(any(Serializable.class), any(Class.class));
verify(mockData, times(1)).getInputStream();
assertEquals(mockRepoFile, wrapper.getRepositoryFile());
assertEquals(mockStreamingOutput, wrapper.getOutputStream());
/*
* TEST 2
*/
doReturn(false).when(fileService).isPath(nullable(String.class));
doReturn(mockRepoFile).when(fileService.repository).getFileById(nullable(String.class));
wrapper = fileService.doGetFileAsInline("test");
verify(fileService.repository, times(1)).getFileById(nullable(String.class));
verify(fileService, times(4)).getRepository();
assertEquals(mockRepoFile, wrapper.getRepositoryFile());
assertEquals(mockStreamingOutput, wrapper.getOutputStream());
}
use of javax.ws.rs.core.StreamingOutput in project pentaho-platform by pentaho.
the class FileService method systemBackup.
public DownloadFileWrapper systemBackup(String userAgent) throws IOException, ExportException {
if (doCanAdminister()) {
String originalFileName;
String encodedFileName;
originalFileName = "SystemBackup.zip";
encodedFileName = makeEncodedFileName(originalFileName);
StreamingOutput streamingOutput = getBackupStream();
final String attachment = HttpMimeTypeListener.buildContentDispositionValue(originalFileName, true);
return new DownloadFileWrapper(streamingOutput, attachment, encodedFileName);
} else {
throw new SecurityException();
}
}
use of javax.ws.rs.core.StreamingOutput in project pentaho-platform by pentaho.
the class FileService method getBackupStream.
private StreamingOutput getBackupStream() throws IOException, ExportException {
File zipFile = getBackupExporter().performExport();
final FileInputStream inputStream = new FileInputStream(zipFile);
return new StreamingOutput() {
@Override
public void write(OutputStream output) throws IOException {
IOUtils.copy(inputStream, output);
}
};
}
Aggregations