use of org.eclipse.winery.repository.export.CsarExportOptions in project winery by eclipse.
the class AbstractComponentInstanceResource method getCSAR.
@GET
@Produces(MimeTypes.MIMETYPE_ZIP)
public final Response getCSAR(@QueryParam(value = "addToProvenance") String addToProvenance, @QueryParam(value = "includeDependencies") String includeDependencies) {
if (!requestRepository.exists(this.id)) {
return Response.status(Status.NOT_FOUND).build();
}
CsarExportOptions options = new CsarExportOptions();
options.setAddToProvenance(Objects.nonNull(addToProvenance));
options.setIncludeDependencies(Objects.nonNull(includeDependencies));
return RestUtils.getCsarOfSelectedResource(this, options);
}
use of org.eclipse.winery.repository.export.CsarExportOptions in project winery by eclipse.
the class RestUtils method getCsarOfSelectedResource.
/**
* @param options the set of options that are applicable for exporting a csar
*/
public static Response getCsarOfSelectedResource(final AbstractComponentInstanceResource resource, CsarExportOptions options) {
long start = System.currentTimeMillis();
final CsarExporter exporter = new CsarExporter(RepositoryFactory.getRepository());
Map<String, Object> exportConfiguration = new HashMap<>();
StreamingOutput so = output -> {
try {
// check which options are chosen
if (options.isAddToProvenance()) {
// We wait for the accountability layer to confirm the transaction
String result = exporter.writeCsarAndSaveManifestInProvenanceLayer(resource.getId(), output).get();
LOGGER.debug("Stored state in accountability layer in transaction " + result);
} else if (options.isIncludeDependencies() && resource.getId() instanceof ServiceTemplateId) {
SelfContainmentPackager packager = new SelfContainmentPackager(RepositoryFactory.getRepository());
DefinitionsChildId selfContainedVersion = packager.createSelfContainedVersion(resource.getId());
exporter.writeSelfContainedCsar(RepositoryFactory.getRepository(), selfContainedVersion, output, exportConfiguration);
} else {
exporter.writeCsar(resource.getId(), output, exportConfiguration);
}
long duration = (System.currentTimeMillis() - start) / 1000;
LOGGER.debug("CSAR export lasted {} min {} s", (int) duration / 60, duration % 60);
} catch (Exception e) {
LOGGER.error("Error while exporting CSAR", e);
throw new WebApplicationException(e);
}
};
String contentDisposition = String.format("attachment;filename=\"%s%s\"", resource.getXmlId().getEncoded(), Constants.SUFFIX_CSAR);
return Response.ok().header("Content-Disposition", contentDisposition).type(MimeTypes.MIMETYPE_ZIP).entity(so).build();
}
Aggregations