diff --git a/services/git-bridge/.idea/workspace.xml b/services/git-bridge/.idea/workspace.xml
index 1617220ed5..b50bb06fc0 100644
--- a/services/git-bridge/.idea/workspace.xml
+++ b/services/git-bridge/.idea/workspace.xml
@@ -7,10 +7,9 @@
-
+
-
@@ -34,71 +33,31 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -107,25 +66,45 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -134,6 +113,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -147,14 +146,6 @@
@@ -781,13 +780,13 @@
-
-
-
+
+
+
@@ -1069,57 +1068,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1373,14 +1321,6 @@
-
-
-
-
-
-
-
-
@@ -1408,7 +1348,7 @@
-
+
@@ -1429,14 +1369,6 @@
-
-
-
-
-
-
-
-
@@ -1447,8 +1379,80 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 61dd811585..8879aa1524 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.SnapshotRepositoryBuilder;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositorySource;
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 SnapshotRepositoryBuilder()));
+ setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositorySource()));
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 18fe7e006d..f2f4c6699f 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.SnapshotRepositoryBuilder;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotRepositorySource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
@@ -21,7 +21,7 @@ public class WLRepositoryResolver implements RepositoryResolver getSnapshots() {
+ return null;
+ }
+
+ @Override
+ public void putSnapshots(List snapshots) {
+
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/DummySnapshotDBAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/DummySnapshotDBAPI.java
new file mode 100644
index 0000000000..89fbb80eef
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/DummySnapshotDBAPI.java
@@ -0,0 +1,23 @@
+package uk.ac.ic.wlgitbridge.writelatex;
+
+import org.eclipse.jgit.lib.Repository;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class DummySnapshotDBAPI implements SnapshotDBAPI {
+
+ @Override
+ public boolean repositoryExists(Repository repository) {
+ return false;
+ }
+
+ @Override
+ public List getSnapshotsToAddToRepository(Repository repository) {
+ return new LinkedList();
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/RepositoryBuilder.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/RepositoryBuilder.java
new file mode 100644
index 0000000000..1ab161d74b
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/RepositoryBuilder.java
@@ -0,0 +1,13 @@
+package uk.ac.ic.wlgitbridge.writelatex;
+
+import org.eclipse.jgit.errors.RepositoryNotFoundException;
+import org.eclipse.jgit.lib.Repository;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public interface RepositoryBuilder {
+
+ public void buildRepository(Repository repository) throws RepositoryNotFoundException;
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/Snapshot.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/Snapshot.java
new file mode 100644
index 0000000000..f7eb685d4f
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/Snapshot.java
@@ -0,0 +1,7 @@
+package uk.ac.ic.wlgitbridge.writelatex;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class Snapshot {
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotAPI.java
new file mode 100644
index 0000000000..f7a34237fe
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotAPI.java
@@ -0,0 +1,13 @@
+package uk.ac.ic.wlgitbridge.writelatex;
+
+import java.util.List;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public interface SnapshotAPI {
+
+ public List getSnapshots();
+ public void putSnapshots(List snapshots);
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotDBAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotDBAPI.java
new file mode 100644
index 0000000000..bbc695b5b6
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotDBAPI.java
@@ -0,0 +1,15 @@
+package uk.ac.ic.wlgitbridge.writelatex;
+
+import org.eclipse.jgit.lib.Repository;
+
+import java.util.List;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public interface SnapshotDBAPI {
+
+ public boolean repositoryExists(Repository repository);
+ public List getSnapshotsToAddToRepository(Repository repository);
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java
index 5095cd86b8..9261b45d5a 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositoryBuilder.java
@@ -2,31 +2,40 @@ 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;
+import java.util.List;
/**
* Created by Winston on 03/11/14.
*/
-public class SnapshotRepositoryBuilder implements RepositorySource {
+public class SnapshotRepositoryBuilder implements RepositoryBuilder {
+
+ private SnapshotDBAPI snapshotDBAPI;
+ private SnapshotAPI snapshotAPI;
+
+ public SnapshotRepositoryBuilder() {
+ snapshotDBAPI = new DummySnapshotDBAPI();
+ snapshotAPI = new DummySnapshotAPI();
+ }
@Override
- public Repository getRepositoryWithNameAtRootDirectory(String name, File rootDirectory) throws RepositoryNotFoundException {
- File repositoryRoot = new File(rootDirectory.getAbsolutePath(), name);
+ public void buildRepository(Repository repository) throws RepositoryNotFoundException {
+ if (repository.getObjectDatabase().exists()) {
+ updateRepositoryFromSnapshots(repository);
+ } else {
+ buildRepositoryFromScratch(repository);
+ }
+ }
- Repository repository = null;
- try {
- repository = new FileRepositoryBuilder().setWorkTree(repositoryRoot).build();
- } catch (IOException e) {
- throw new RepositoryNotFoundException(name);
+ private void updateRepositoryFromSnapshots(Repository repository) {
+ List snapshotsToAdd = snapshotDBAPI.getSnapshotsToAddToRepository(repository);
+ }
+
+ private void buildRepositoryFromScratch(Repository repository) throws RepositoryNotFoundException {
+ if (!snapshotDBAPI.repositoryExists(repository)) {
+ throw new RepositoryNotFoundException(repository.getDirectory());
}
- if (!repository.getObjectDatabase().exists()) {
- throw new RepositoryNotFoundException(name);
- }
- return repository;
+ updateRepositoryFromSnapshots(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
new file mode 100644
index 0000000000..62071dc332
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotRepositorySource.java
@@ -0,0 +1,36 @@
+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;
+ }
+
+}