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() { - - } - -}