Skip to content

Commit f83b15c

Browse files
ThomasJejkaljohnscancella
authored andcommitted
refs #99 - fixing fetch files being listed in manifest files
1 parent a3cfb5e commit f83b15c

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

src/main/java/gov/loc/repository/bagit/writer/PayloadWriter.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static Path writeVersionDependentPayloadFiles(final Bag bag, final Path outputDi
6161
*/
6262
public static void writePayloadFiles(final Set<Manifest> payloadManifests, final List<FetchItem> fetchItems, final Path outputDir, final Path bagDataDir) throws IOException{
6363
logger.info(messages.getString("writing_payload_files"));
64-
final Set<Path> fetchPaths = getFetchPaths(fetchItems);
64+
final Set<Path> fetchPaths = getFetchPaths(fetchItems, bagDataDir);
6565

6666
for(final Manifest payloadManifest : payloadManifests){
6767
for(final Path payloadFile : payloadManifest.getFileToChecksumMap().keySet()){
@@ -83,11 +83,14 @@ public static void writePayloadFiles(final Set<Manifest> payloadManifests, final
8383
}
8484
}
8585

86-
private static Set<Path> getFetchPaths(final List<FetchItem> fetchItems){
87-
final Set<Path> fetchPaths = new HashSet<>();
88-
for(final FetchItem fetchItem : fetchItems) {
89-
fetchPaths.add(fetchItem.getPath());
90-
}
91-
return fetchPaths;
86+
private static Set<Path> getFetchPaths(final List<FetchItem> fetchItems, final Path bagDataDir) {
87+
final Set<Path> fetchPaths = new HashSet<>();
88+
for (final FetchItem fetchItem : fetchItems) {
89+
final Path parent = bagDataDir.getParent();
90+
if(parent != null){
91+
fetchPaths.add(bagDataDir.relativize(parent.resolve(fetchItem.getPath())));
92+
}
93+
}
94+
return fetchPaths;
9295
}
9396
}

src/test/java/gov/loc/repository/bagit/writer/PayloadWriterTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ public void testWritePayloadFilesMinusFetchFiles() throws IOException, URISyntax
5858
File copiedFile = new File(outputDir, "data/dir1/test3.txt");
5959

6060
assertFalse(copiedFile.exists() || copiedFile.getParentFile().exists());
61-
PayloadWriter.writePayloadFiles(payloadManifests, Arrays.asList(new FetchItem(null, null, Paths.get("data/dir1/test3.txt"))),Paths.get(outputDir.toURI()), rootDir);
61+
PayloadWriter.writePayloadFiles(payloadManifests,
62+
Arrays.asList(new FetchItem(null, null, Paths.get("data/dir1/test3.txt"))), Paths.get(outputDir.toURI()),
63+
rootDir.resolve("data"));
6264
assertFalse(copiedFile.exists() && copiedFile.getParentFile().exists());
6365
}
6466
}

0 commit comments

Comments
 (0)