protected ProvenanceVerification verifyFileInManifest(ModelProvenanceElement element, String fileId, String checksum) throws SerializationException { // 1. parse element.state as ManifestContent ManifestContents manifestContents = new RecoveringManifestParser() .parse(element.getFingerprint()); if (manifestContents.getSectionNames().contains(fileId)) { String storedHash = manifestContents.getAttributesForSection(fileId).get(TOSCAMetaFileAttributes.HASH); if (Objects.isNull(storedHash)) { return NO_HASH_AVAILABLE; } else if (storedHash.equals(checksum)) { // 2.1 if section == fileId and hash == checksum -> file verified return VERIFIED; } else { return INVALID; } } return ID_NOT_FOUND; }
private void fillFilesOfModel(ModelProvenanceElement model) { // 1. parse element.state as ManifestContent RecoveringManifestParser genericParser = new RecoveringManifestParser(); ManifestContents manifestContents = genericParser.parse(model.getFingerprint()); // 2. parse the ManifestContent as a TOSCAMetaFile TOSCAMetaFileParser parser = new TOSCAMetaFileParser(); TOSCAMetaFile toscaMetaFile = parser.parse(manifestContents, genericParser.getProblems().size()); //3. retrieve files from meta file Objects.requireNonNull(toscaMetaFile); List<FileProvenanceElement> result = toscaMetaFile .getFileBlocks() .stream() .map( fileSection -> { FileProvenanceElement fileElement = new FileProvenanceElement(model); fileElement.setFileHash(fileSection.get(TOSCAMetaFileAttributes.HASH)); fileElement.setAddressInImmutableStorage(fileSection.get(TOSCAMetaFileAttributes.IMMUTABLE_ADDRESS)); fileElement.setFileName(fileSection.get(TOSCAMetaFileAttributes.NAME)); return fileElement; } ) .sorted(Comparator.comparing(FileProvenanceElement::getFileName)) .collect(Collectors.toList()); model.setFiles(result); } }
if (Objects.nonNull(modelProvenanceElement.getFingerprint())) { ManifestContents manifestContents = new RecoveringManifestParser() .parse(modelProvenanceElement.getFingerprint());