- private static final String TOSCA_METADATA_LOCATION = "TOSCA-Metadata/TOSCA.meta";
- private static final String ENTRY_DEFINITIONS_INDEX = "Entry-Definitions";
- private static final String ACM_COMPOSITION_JSON_LOCATION = "Files/Acm/definition/compositions.json";
- private static final String ACM_DEFINITION_LOCATION = "Files/Acm/definition";
- private static final String ACM_INSTANCES_LOCATION = "Files/Acm/instances";
- private static final String SME_PROVIDER_FUNCS_LOCATION = "Files/Sme/providers";
- private static final String SME_SERVICE_APIS_LOCATION = "Files/Sme/serviceapis";
- private static final String SME_INVOKERS_LOCATION = "Files/Sme/invokers";
- private static final String DME_PRODUCER_INFO_TYPES_LOCATION = "Files/Dme/producerinfotypes";
- private static final String DME_CONSUMER_INFO_TYPES_LOCATION = "Files/Dme/consumerinfotypes";
- private static final String DME_INFO_PRODUCERS_LOCATION = "Files/Dme/infoproducers";
- private static final String DME_INFO_CONSUMERS_LOCATION = "Files/Dme/infoconsumers";
- private static final String ARTIFACTS_LOCATION_JSON_POINTER =
- "/topology_template/node_templates/applicationServiceDescriptor/artifacts";
-
-
- public boolean isValidRappPackage(MultipartFile multipartFile) {
- String originalFilename = multipartFile.getOriginalFilename();
- if (originalFilename != null) {
- return originalFilename.endsWith(".csar") && isFileExistsInCsar(multipartFile,
- ACM_COMPOSITION_JSON_LOCATION) && isFileExistsInCsar(multipartFile, TOSCA_METADATA_LOCATION)
- && containsValidArtifactDefinition(multipartFile);
- }
- return false;
- }
-
- boolean isFileExistsInCsar(MultipartFile multipartFile, String fileLocation) {
- try (ZipArchiveInputStream zipArchiveInputStream = new ZipArchiveInputStream(multipartFile.getInputStream())) {
- ArchiveEntry zipEntry;
- while ((zipEntry = zipArchiveInputStream.getNextEntry()) != null) {
- if (zipEntry.getName().matches(fileLocation)) {
- return Boolean.TRUE;
- }
- }
- throw new RappHandlerException(HttpStatus.BAD_REQUEST, "rApp package missing a file " + fileLocation);
- } catch (IOException e) {
- logger.error("Unable to find the CSAR file", e);
- throw new RappHandlerException(HttpStatus.BAD_REQUEST, "rApp package missing a file " + fileLocation);
- }
- }