diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/DataStore.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/DataStore.java index 8df74088fa..567732b990 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/DataStore.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/DataStore.java @@ -12,6 +12,7 @@ import uk.ac.ic.wlgitbridge.data.filestore.RawDirectory; import uk.ac.ic.wlgitbridge.data.filestore.RawFile; import uk.ac.ic.wlgitbridge.data.model.db.PersistentStore; import uk.ac.ic.wlgitbridge.data.model.db.SqlitePersistentStore; +import uk.ac.ic.wlgitbridge.git.util.RepositoryObjectTreeWalker; import uk.ac.ic.wlgitbridge.snapshot.base.ForbiddenException; import uk.ac.ic.wlgitbridge.snapshot.getforversion.SnapshotAttachment; import uk.ac.ic.wlgitbridge.snapshot.push.exception.SnapshotPostException; @@ -75,6 +76,7 @@ public class DataStore { List snapshots) throws IOException, GitAPIException, SnapshotPostException { for (Snapshot snapshot : snapshots) { + Map fileTable = new RepositoryObjectTreeWalker(repository).getDirectoryContents().getFileTable(); List files = new LinkedList(); files.addAll(snapshot.getSrcs()); Map fetchedUrls = new HashMap(); @@ -84,7 +86,7 @@ public class DataStore { name, snapshotAttachment.getUrl(), snapshotAttachment.getPath(), - repository, + fileTable, fetchedUrls ) ); diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcher.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcher.java index 0e08ecccc4..257033088b 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcher.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcher.java @@ -29,7 +29,7 @@ public class ResourceFetcher { this.persistentStore = persistentStore; } - public RawFile get(String projectName, String url, String newPath, Repository repository, Map fetchedUrls) throws IOException, SnapshotPostException { + public RawFile get(String projectName, String url, String newPath, Map fileTable, Map fetchedUrls) throws IOException, SnapshotPostException { String path = persistentStore.getPathForURLInProject(projectName, url); byte[] contents; if (path == null) { @@ -41,7 +41,7 @@ public class ResourceFetcher { Log.info("At (" + projectName + "): " + path); contents = fetchedUrls.get(url); if (contents == null) { - RawFile rawFile = new RepositoryObjectTreeWalker(repository).getDirectoryContents().getFileTable().get(path); + RawFile rawFile = fileTable.get(path); if (rawFile == null) { Log.warn( "File " + path + " was not in the current commit, or the git tree, yet path was not null. " + diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java index 17cfcf8584..d171c21cd7 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java @@ -9,7 +9,9 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.mockserver.client.server.MockServerClient; import org.mockserver.junit.MockServerRule; +import uk.ac.ic.wlgitbridge.data.filestore.RawFile; import uk.ac.ic.wlgitbridge.data.model.db.PersistentStore; +import uk.ac.ic.wlgitbridge.git.util.RepositoryObjectTreeWalker; import uk.ac.ic.wlgitbridge.snapshot.push.exception.SnapshotPostException; import java.io.IOException; @@ -62,8 +64,9 @@ public class ResourceFetcherTest { TemporaryFolder repositoryFolder = new TemporaryFolder(); repositoryFolder.create(); Repository repository = new FileRepositoryBuilder().setWorkTree(repositoryFolder.getRoot()).build(); + Map fileTable = new RepositoryObjectTreeWalker(repository).getDirectoryContents().getFileTable(); Map fetchedUrls = new HashMap(); - resourceFetcher.get(testProjectName, testUrl, newTestPath, repository, fetchedUrls); + resourceFetcher.get(testProjectName, testUrl, newTestPath, fileTable, fetchedUrls); // We don't bother caching in this case, at present. assertEquals(0, fetchedUrls.size());