Description
LocalMetadataStore#put(DirListingMetadata) only puts the metadata into dirHash, thus all FileStatus s are missing from LocalMedataStore#fileHash(), which makes it confuse to use.
So in the current way, to correctly put file status into the store (and also set authoriative flag), you need to run
List<PathMetadata> metas = new ArrayList<PathMetadata>(); boolean authorizative = true; for (S3AFileStatus status : files) { PathMetadata meta = new PathMetadata(status); store.put(meta); } DirListingMetadata dirMeta = new DirMeta(parent, metas, authorizative); store.put(dirMeta);
Since solely calling store.put(dirMeta) is not correct, and calling store.put(dirMeta); after putting all sub-file FileStatuss does the repetitive jobs. Can we just use a put(PathMetadata) and a get/setAuthorative() in the MetadataStore interface instead?