Repository navigation
Bag completeness for tag files #124
Description
Activity
@rvanheest and @acdha the
PayloadVerifieractually does verify all files listed in all manifests. It should probably be renamed/refactored to make this more obviousIt does this by first getting all the files listed in all manifests (see https://github.com/LibraryOfCongress/bagit-java/blob/master/src/main/java/gov/loc/repository/bagit/verify/PayloadVerifier.java#L115-L134) and then verifies them (see https://github.com/LibraryOfCongress/bagit-java/blob/master/src/main/java/gov/loc/repository/bagit/verify/PayloadVerifier.java#L102-L103)
Thanks for the quick response (as always!). I now see what my confusion was: in
PayloadVerifierI mainly looked at line 105-109 and glanced over 102-103. That one does the checking mentioned in my original post. The 105-109 part checks the opposite: "all files in the payload directory should be listed in all manifests".bagit-java/src/main/java/gov/loc/repository/bagit/verify/PayloadVerifier.java
Lines 98 to 110 in 2b7002e
public void verifyPayload(final Bag bag, final boolean ignoreHiddenFiles) throws IOException, MaliciousPathException, UnsupportedAlgorithmException, InvalidBagitFileFormatException, FileNotInPayloadDirectoryException, InterruptedException { final Set<Path> allFilesListedInManifests = getAllFilesListedInManifests(bag); checkAllFilesListedInManifestExist(allFilesListedInManifests); if (bag.getVersion().isOlder(new Version(1, 0))) { checkAllFilesInPayloadDirAreListedInAtLeastOneAManifest(allFilesListedInManifests, PathUtils.getDataDir(bag), ignoreHiddenFiles); } else { CheckAllFilesInPayloadDirAreListedInAllManifests(bag.getPayLoadManifests(), PathUtils.getDataDir(bag), ignoreHiddenFiles); } } Thanks for the clarification. That helped a lot.
Yes, refactoring this a bit probably won't hurt.
In BagIt v16 spec it says on completeness of a bag:
Likewise in earlier specs (v14) it says:
However, the
BagVerifieronly verifies the completeness in terms of the payload manifests, not in terms of the tag manifests. Shouldn't that be added also? Or is that done somewhere else?