diff --git a/services/git-bridge/.idea/workspace.xml b/services/git-bridge/.idea/workspace.xml
index 32b77c25c3..a96cadcf2f 100644
--- a/services/git-bridge/.idea/workspace.xml
+++ b/services/git-bridge/.idea/workspace.xml
@@ -7,8 +7,14 @@
-
-
+
+
+
+
+
+
+
+
@@ -31,11 +37,11 @@
-
-
+
+
-
-
+
+
@@ -44,8 +50,38 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55,67 +91,37 @@
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -144,11 +150,6 @@
-
-
-
-
+
+
+
@@ -1014,15 +1019,15 @@
-
-
+
+
-
+
@@ -1033,7 +1038,7 @@
-
+
@@ -1190,13 +1195,6 @@
-
-
-
-
-
-
-
@@ -1211,13 +1209,6 @@
-
-
-
-
-
-
-
@@ -1290,14 +1281,6 @@
-
-
-
-
-
-
-
-
@@ -1338,14 +1321,6 @@
-
-
-
-
-
-
-
-
@@ -1378,14 +1353,6 @@
-
-
-
-
-
-
-
-
@@ -1402,14 +1369,6 @@
-
-
-
-
-
-
-
-
@@ -1426,38 +1385,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1466,18 +1393,82 @@
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/BridgedProject.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/BridgedProject.java
deleted file mode 100644
index 6b1dff3301..0000000000
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/BridgedProject.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package uk.ac.ic.wlgitbridge.bridge;
-
-import org.eclipse.jgit.lib.Repository;
-
-/**
- * Created by Winston on 05/11/14.
- */
-public class BridgedProject {
-
- private final Repository repository;
-
- public BridgedProject(Repository repository) {
- this.repository = repository;
- }
-
-}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java
new file mode 100644
index 0000000000..a3604314c9
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java
@@ -0,0 +1,48 @@
+package uk.ac.ic.wlgitbridge.bridge;
+
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
+import org.eclipse.jgit.lib.Repository;
+import uk.ac.ic.wlgitbridge.writelatex.Snapshot;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotDBAPI;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Created by Winston on 05/11/14.
+ */
+public class WLBridgedProject {
+
+ private final Repository repository;
+ private final String name;
+ private final File repositoryDirectory;
+ private final SnapshotDBAPI snapshotDBAPI;
+
+ public WLBridgedProject(Repository repository, String name, File repositoryDirectory, SnapshotDBAPI snapshotDBAPI) {
+ this.repository = repository;
+ this.name = name;
+ this.repositoryDirectory = repositoryDirectory;
+ this.snapshotDBAPI = snapshotDBAPI;
+ }
+
+ public void buildRepository() throws RepositoryNotFoundException {
+ if (repository.getObjectDatabase().exists()) {
+ updateRepositoryFromSnapshots(repository);
+ } else {
+ buildRepositoryFromScratch(repository);
+ }
+ }
+
+ private void updateRepositoryFromSnapshots(Repository repository) {
+ List snapshotsToAdd = snapshotDBAPI.getSnapshotsToAddToRepository(repository);
+ }
+
+ private void buildRepositoryFromScratch(Repository repository) throws RepositoryNotFoundException {
+ System.out.println("Need to build repo: " + repository.getDirectory().getAbsolutePath());
+ if (!snapshotDBAPI.repositoryExists(repository)) {
+ throw new RepositoryNotFoundException(repository.getDirectory());
+ }
+ updateRepositoryFromSnapshots(repository);
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java
index 8879aa1524..61dd811585 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java
@@ -6,7 +6,7 @@ import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException;
import uk.ac.ic.wlgitbridge.git.handler.WLReceivePackFactory;
import uk.ac.ic.wlgitbridge.git.handler.WLRepositoryResolver;
import uk.ac.ic.wlgitbridge.git.handler.WLUploadPackFactory;
-import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositorySource;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositoryBuilder;
import javax.servlet.ServletException;
@@ -16,7 +16,7 @@ import javax.servlet.ServletException;
public class WLGitServlet extends GitServlet {
public WLGitServlet(ServletContextHandler servletContextHandler, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException {
- setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositorySource()));
+ setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositoryBuilder()));
setReceivePackFactory(new WLReceivePackFactory());
setUploadPackFactory(new WLUploadPackFactory());
init(new WLGitServletConfig(servletContextHandler));
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
index f2f4c6699f..18fe7e006d 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
@@ -8,7 +8,7 @@ import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException;
import uk.ac.ic.wlgitbridge.bridge.RepositorySource;
-import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositorySource;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositoryBuilder;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
@@ -21,7 +21,7 @@ public class WLRepositoryResolver implements RepositoryResolver snapshotsToAdd = snapshotDBAPI.getSnapshotsToAddToRepository(repository);
- }
-
- private void buildRepositoryFromScratch(Repository repository) throws RepositoryNotFoundException {
- System.out.println("Need to build repo: " + repository.getDirectory().getAbsolutePath());
- if (!snapshotDBAPI.repositoryExists(repository)) {
- throw new RepositoryNotFoundException(repository.getDirectory());
+ Repository repository = null;
+ try {
+ repository = new FileRepositoryBuilder().setWorkTree(repositoryDirectory).build();
+ } catch (IOException e) {
+ throw new RepositoryNotFoundException(name);
}
- updateRepositoryFromSnapshots(repository);
+ new WLBridgedProject(repository, name, repositoryDirectory, snapshotDBAPI).buildRepository();
+ return repository;
}
}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositorySource.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositorySource.java
deleted file mode 100644
index 62071dc332..0000000000
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositorySource.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex;
-
-import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
-import uk.ac.ic.wlgitbridge.bridge.RepositorySource;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Created by Winston on 03/11/14.
- */
-public class SnapshotRepositorySource implements RepositorySource {
-
- private RepositoryBuilder repositoryBuilder;
-
- public SnapshotRepositorySource() {
- repositoryBuilder = new SnapshotRepositoryBuilder();
- }
-
- @Override
- public Repository getRepositoryWithNameAtRootDirectory(String name, File rootDirectory) throws RepositoryNotFoundException {
- File repositoryDirectory = new File(rootDirectory.getAbsolutePath(), name);
-
- Repository repository = null;
- try {
- repository = new FileRepositoryBuilder().setWorkTree(repositoryDirectory).build();
- } catch (IOException e) {
- throw new RepositoryNotFoundException(name);
- }
- repositoryBuilder.buildRepository(repository);
- return repository;
- }
-
-}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/BridgedProjectTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java
similarity index 80%
rename from services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/BridgedProjectTests.java
rename to services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java
index 2be0df3d67..1112693ac7 100644
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/BridgedProjectTests.java
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/bridge/WLBridgedProjectTests.java
@@ -5,11 +5,11 @@ import org.junit.Test;
/**
* Created by Winston on 05/11/14.
*/
-public class BridgedProjectTests {
+public class WLBridgedProjectTests {
@Test
public void nothingToTest() {
}
-
+
}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositoryBuilderTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositoryBuilderTests.java
index b807bb186e..5cf9137975 100644
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositoryBuilderTests.java
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositoryBuilderTests.java
@@ -3,7 +3,7 @@ package uk.ac.ic.wlgitbridge.test.writelatex;
import org.junit.Test;
/**
- * Created by Winston on 03/11/14.
+ * Created by Winston on 05/11/14.
*/
public class SnapshotRepositoryBuilderTests {
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositorySourceTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositorySourceTests.java
deleted file mode 100644
index 3ed0789333..0000000000
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/writelatex/SnapshotRepositorySourceTests.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package uk.ac.ic.wlgitbridge.test.writelatex;
-
-import org.junit.Test;
-
-/**
- * Created by Winston on 05/11/14.
- */
-public class SnapshotRepositorySourceTests {
-
- @Test
- public void nothingToTest() {
-
- }
-
-}