Skip to content

Bag completeness for tag files #124

Description

@rvanheest

In BagIt v16 spec it says on completeness of a bag:

  1. Every file listed in every tag manifest MUST be present.

Likewise in earlier specs (v14) it says:

  1. Every file in every tag manifest MUST be present. Tag files not listed in a tag manifest MAY be present.

However, the BagVerifier only 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?

Activity

  1. jscancella commented on Jul 20, 2018

    @jscancella
    Contributor

    @rvanheest and @acdha the PayloadVerifier actually does verify all files listed in all manifests. It should probably be renamed/refactored to make this more obvious

    It 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)

  2. rvanheest commented on Jul 20, 2018

    @rvanheest
    Author

    Thanks for the quick response (as always!). I now see what my confusion was: in PayloadVerifier I 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".

    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.

  3. added a commit that references this issue on Feb 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions