diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java index bf92acfa11..0972a61c9f 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/WLGitBridgeServer.java @@ -5,7 +5,7 @@ import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.log.Log; import uk.ac.ic.wlgitbridge.application.jetty.NullLogger; -import uk.ac.ic.wlgitbridge.git.WLGitServlet; +import uk.ac.ic.wlgitbridge.git.servlet.WLGitServlet; import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException; import uk.ac.ic.wlgitbridge.writelatex.model.WLDataModel; diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/CandidateSnapshot.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/CandidateSnapshot.java new file mode 100644 index 0000000000..22f492fe20 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/CandidateSnapshot.java @@ -0,0 +1,15 @@ +package uk.ac.ic.wlgitbridge.bridge; + +import com.google.gson.JsonElement; +import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode; + +/** + * Created by Winston on 16/11/14. + */ +public interface CandidateSnapshot { + + public JsonElement getJsonRepresentation(); + public void approveWithVersionID(int versionID); + public WLDirectoryNode getDirectoryNode(); + +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawDirectoryContents.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawDirectoryContents.java new file mode 100644 index 0000000000..3d4a8f33a9 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawDirectoryContents.java @@ -0,0 +1,11 @@ +package uk.ac.ic.wlgitbridge.bridge; + +import java.util.Map; + +/** + * Created by Winston on 16/11/14. + */ +public interface RawDirectoryContents { + + public Map getFileContentsTable(); +} 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 index 6c2b8f8702..b525b02a7a 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java @@ -5,11 +5,9 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; -import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException; -import java.io.File; import java.io.IOException; import java.util.List; @@ -20,14 +18,12 @@ public class WLBridgedProject { private final Repository repository; private final String name; - private final File repositoryDirectory; - private final SnapshotDBAPI snapshotDBAPI; + private final WriteLatexDataSource writeLatexDataSource; - public WLBridgedProject(Repository repository, String name, File repositoryDirectory, SnapshotDBAPI snapshotDBAPI) { + public WLBridgedProject(Repository repository, String name, WriteLatexDataSource writeLatexDataSource) { this.repository = repository; this.name = name; - this.repositoryDirectory = repositoryDirectory; - this.snapshotDBAPI = snapshotDBAPI; + this.writeLatexDataSource = writeLatexDataSource; } public void buildRepository() throws RepositoryNotFoundException, ServiceNotEnabledException, FailedConnectionException { @@ -41,7 +37,7 @@ public class WLBridgedProject { private void updateRepositoryFromSnapshots(Repository repository) throws ServiceNotEnabledException, RepositoryNotFoundException, FailedConnectionException { List writableRepositories; try { - writableRepositories = snapshotDBAPI.getWritableRepositories(name); + writableRepositories = writeLatexDataSource.getWritableRepositories(name); } catch (InvalidProjectException e) { throw new RepositoryNotFoundException(name); } @@ -63,13 +59,13 @@ public class WLBridgedProject { } private void buildRepositoryFromScratch(Repository repository) throws RepositoryNotFoundException, ServiceNotEnabledException, FailedConnectionException { - if (!snapshotDBAPI.repositoryExists(name)) { + if (!writeLatexDataSource.repositoryExists(name)) { throw new RepositoryNotFoundException(name); } try { repository.create(); } catch (IOException e) { - e.printStackTrace(); + throw new ServiceNotEnabledException(); } updateRepositoryFromSnapshots(repository); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java similarity index 65% rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java index a346e220ca..9d5e8cb80f 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/SnapshotDBAPI.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java @@ -1,18 +1,18 @@ -package uk.ac.ic.wlgitbridge.writelatex.api; +package uk.ac.ic.wlgitbridge.bridge; -import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException; -import uk.ac.ic.wlgitbridge.writelatex.model.Snapshot; import java.util.List; /** * Created by Winston on 03/11/14. */ -public interface SnapshotDBAPI { +public interface WriteLatexDataSource { public boolean repositoryExists(String name) throws FailedConnectionException; public List getWritableRepositories(String name) throws FailedConnectionException, InvalidProjectException; + public CandidateSnapshot createCandidateSnapshot(RawDirectoryContents rawDirectoryContents); + public void approveCandidateSnapshot(CandidateSnapshot candidateSnapshot); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java index 1ef9b9f304..3525b5de7a 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java @@ -5,8 +5,8 @@ import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.resolver.ReceivePackFactory; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; -import uk.ac.ic.wlgitbridge.git.handler.hook.CheckNonFastForwardHook; -import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; +import uk.ac.ic.wlgitbridge.git.handler.hook.WriteLatexPutHook; +import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource; import javax.servlet.http.HttpServletRequest; @@ -16,14 +16,16 @@ import javax.servlet.http.HttpServletRequest; /* */ public class WLReceivePackFactory implements ReceivePackFactory { - public WLReceivePackFactory(SnapshotDBAPI snapshotDBAPI) { + private final WriteLatexDataSource writeLatexDataSource; + public WLReceivePackFactory(WriteLatexDataSource writeLatexDataSource) { + this.writeLatexDataSource = writeLatexDataSource; } @Override public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException { ReceivePack receivePack = new ReceivePack(repository); - receivePack.setPreReceiveHook(new CheckNonFastForwardHook()); + receivePack.setPreReceiveHook(new WriteLatexPutHook(writeLatexDataSource)); return receivePack; } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/CheckNonFastForwardHook.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/CheckNonFastForwardHook.java deleted file mode 100644 index de4ac18a4c..0000000000 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/CheckNonFastForwardHook.java +++ /dev/null @@ -1,63 +0,0 @@ -package uk.ac.ic.wlgitbridge.git.handler.hook; - -import org.eclipse.jgit.lib.RefUpdate; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.revwalk.RevTree; -import org.eclipse.jgit.revwalk.RevWalk; -import org.eclipse.jgit.transport.PreReceiveHook; -import org.eclipse.jgit.transport.ReceiveCommand; -import org.eclipse.jgit.transport.ReceivePack; -import org.eclipse.jgit.treewalk.TreeWalk; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Collection; - -/** - * Created by Winston on 03/11/14. - */ -public class CheckNonFastForwardHook implements PreReceiveHook { - - @Override - public void onPreReceive(ReceivePack receivePack, Collection receiveCommands) { - System.out.println("There are " + receiveCommands.size() + " receive commands."); - System.out.println("All commits: "); - System.out.println(receiveCommands); - for (ReceiveCommand receiveCommand : receiveCommands) { -// receiveCommand.setResult(RefUpdate.Result.REJECTED); - try { - System.out.println("Old: " + receiveCommand.getOldId()); - System.out.println("New: " + receiveCommand.getNewId()); - // a RevWalk allows to walk over commits based on some filtering that is - // defined - RevWalk walk = new RevWalk(receivePack.getRepository()); - RevCommit commit = walk.parseCommit(receiveCommand.getNewId()); - System.out.println("Parent commit: " + commit.getParents()[0].getId()); - RevTree tree = commit.getTree(); - System.out.println("Having tree: " + tree); - - // now use a TreeWalk to iterate over all files in the Tree recursively - // you can set Filters to narrow down the results if needed - TreeWalk treeWalk = new TreeWalk(receivePack.getRepository()); - treeWalk.addTree(tree); - treeWalk.setRecursive(true); - while (treeWalk.next()) { - File file = new File("/Users/Roxy/git/testing/" + treeWalk.getPathString()); - file.getParentFile().mkdirs(); - FileOutputStream out = new FileOutputStream(file); - receivePack.getRepository().open(treeWalk.getObjectId(0)).copyTo(out); - - } - } catch (IOException e) { - e.printStackTrace(); - } - if (receiveCommand.getType() == ReceiveCommand.Type.UPDATE_NONFASTFORWARD) { - receivePack.sendError("You can't do a force push"); - receiveCommand.setResult(RefUpdate.Result.REJECTED); - } - } - System.out.println("Pre receive"); - } - -} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/WriteLatexPutHook.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/WriteLatexPutHook.java new file mode 100644 index 0000000000..dc57d9cee5 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/WriteLatexPutHook.java @@ -0,0 +1,58 @@ +package uk.ac.ic.wlgitbridge.git.handler.hook; + +import org.eclipse.jgit.lib.RefUpdate.Result; +import org.eclipse.jgit.transport.PreReceiveHook; +import org.eclipse.jgit.transport.ReceiveCommand; +import org.eclipse.jgit.transport.ReceivePack; +import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents; +import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource; +import uk.ac.ic.wlgitbridge.git.handler.hook.exception.ForcedPushException; +import uk.ac.ic.wlgitbridge.git.util.RepositoryObjectTreeWalker; + +import java.io.IOException; +import java.util.Collection; + +/** + * Created by Winston on 03/11/14. + */ +public class WriteLatexPutHook implements PreReceiveHook { + + private final WriteLatexDataSource writeLatexDataSource; + + public WriteLatexPutHook(WriteLatexDataSource writeLatexDataSource) { + this.writeLatexDataSource = writeLatexDataSource; + } + + @Override + public void onPreReceive(ReceivePack receivePack, Collection receiveCommands) { + for (ReceiveCommand receiveCommand : receiveCommands) { + try { + handleReceiveCommand(receivePack, receiveCommand); + } catch (ForcedPushException e) { + receivePack.sendError("You can't do a force push"); + receiveCommand.setResult(Result.REJECTED); + } catch (IOException e) { + receivePack.sendError("IOException"); + receiveCommand.setResult(Result.REJECTED); + } + } + } + + private void handleReceiveCommand(ReceivePack receivePack, ReceiveCommand receiveCommand) throws ForcedPushException, IOException { + checkForcedPush(receiveCommand); + RawDirectoryContents directoryContents = getPushedDirectoryContents(receivePack, receiveCommand); + } + + private void checkForcedPush(ReceiveCommand receiveCommand) throws ForcedPushException { + if (receiveCommand.getType() == ReceiveCommand.Type.UPDATE_NONFASTFORWARD) { + throw new ForcedPushException(); + } + } + + private RawDirectoryContents getPushedDirectoryContents(ReceivePack receivePack, ReceiveCommand receiveCommand) throws IOException { + return new RepositoryObjectTreeWalker(receivePack.getRepository(), + receiveCommand.getNewId()) + .getDirectoryContents(); + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/exception/ForcedPushException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/exception/ForcedPushException.java new file mode 100644 index 0000000000..58986ce1a5 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/exception/ForcedPushException.java @@ -0,0 +1,7 @@ +package uk.ac.ic.wlgitbridge.git.handler.hook.exception; + +/** + * Created by Winston on 16/11/14. + */ +public class ForcedPushException extends Exception { +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServlet.java similarity index 68% rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServlet.java index b0602aa6c9..fcb76fccab 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServlet.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServlet.java @@ -1,4 +1,4 @@ -package uk.ac.ic.wlgitbridge.git; +package uk.ac.ic.wlgitbridge.git.servlet; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jgit.http.server.GitServlet; @@ -7,7 +7,7 @@ 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.api.SnapshotDBAPI; +import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource; import javax.servlet.ServletException; @@ -16,9 +16,9 @@ import javax.servlet.ServletException; */ public class WLGitServlet extends GitServlet { - public WLGitServlet(ServletContextHandler servletContextHandler, SnapshotDBAPI snapshotDBAPI, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException { - setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositoryBuilder(snapshotDBAPI))); - setReceivePackFactory(new WLReceivePackFactory(snapshotDBAPI)); + public WLGitServlet(ServletContextHandler servletContextHandler, WriteLatexDataSource writeLatexDataSource, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException { + setRepositoryResolver(new WLRepositoryResolver(rootGitDirectoryPath, new SnapshotRepositoryBuilder(writeLatexDataSource))); + setReceivePackFactory(new WLReceivePackFactory(writeLatexDataSource)); setUploadPackFactory(new WLUploadPackFactory()); init(new WLGitServletConfig(servletContextHandler)); } diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServletConfig.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServletConfig.java similarity index 95% rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServletConfig.java rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServletConfig.java index 95a596598a..360136fe5a 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLGitServletConfig.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/servlet/WLGitServletConfig.java @@ -1,4 +1,4 @@ -package uk.ac.ic.wlgitbridge.git; +package uk.ac.ic.wlgitbridge.git.servlet; import org.eclipse.jetty.servlet.ServletContextHandler; diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/FileDirectoryContents.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/FileDirectoryContents.java new file mode 100644 index 0000000000..14618b202b --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/FileDirectoryContents.java @@ -0,0 +1,23 @@ +package uk.ac.ic.wlgitbridge.git.util; + +import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents; + +import java.util.Map; + +/** + * Created by Winston on 16/11/14. + */ +public class FileDirectoryContents implements RawDirectoryContents { + + private final Map fileContentsTable; + + public FileDirectoryContents(Map fileContentsTable) { + this.fileContentsTable = fileContentsTable; + } + + @Override + public Map getFileContentsTable() { + return fileContentsTable; + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/RepositoryObjectTreeWalker.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/RepositoryObjectTreeWalker.java new file mode 100644 index 0000000000..e89df1b5d3 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/util/RepositoryObjectTreeWalker.java @@ -0,0 +1,46 @@ +package uk.ac.ic.wlgitbridge.git.util; + +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevWalk; +import org.eclipse.jgit.treewalk.TreeWalk; +import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Winston on 16/11/14. + */ +public class RepositoryObjectTreeWalker { + + private final TreeWalk treeWalk; + private final Repository repository; + + public RepositoryObjectTreeWalker(Repository repository, ObjectId objectId) throws IOException { + treeWalk = initTreeWalk(repository, objectId); + this.repository = repository; + } + + public RawDirectoryContents getDirectoryContents() throws IOException { + return new FileDirectoryContents(walkGitObjectTree()); + } + + private TreeWalk initTreeWalk(Repository repository, ObjectId objectId) throws IOException { + RevWalk walk = new RevWalk(repository); + TreeWalk treeWalk = new TreeWalk(repository); + treeWalk.addTree(walk.parseCommit(objectId).getTree()); + treeWalk.setRecursive(true); + return treeWalk; + } + + private Map walkGitObjectTree() throws IOException { + Map fileContentsTable = new HashMap(); + while (treeWalk.next()) { + fileContentsTable.put(treeWalk.getPathString(), repository.open(treeWalk.getObjectId(0)).getBytes()); + } + return fileContentsTable; + } + +} 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 f5b8ec4831..20cecaceb4 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 @@ -6,7 +6,7 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import uk.ac.ic.wlgitbridge.bridge.RepositorySource; import uk.ac.ic.wlgitbridge.bridge.WLBridgedProject; -import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; +import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import java.io.File; @@ -17,20 +17,20 @@ import java.io.IOException; */ public class SnapshotRepositoryBuilder implements RepositorySource { - private final SnapshotDBAPI snapshotDBAPI; + private final WriteLatexDataSource writeLatexDataSource; - public SnapshotRepositoryBuilder(SnapshotDBAPI snapshotDBAPI) { - this.snapshotDBAPI = snapshotDBAPI; + public SnapshotRepositoryBuilder(WriteLatexDataSource writeLatexDataSource) { + this.writeLatexDataSource = writeLatexDataSource; } @Override public Repository getRepositoryWithNameAtRootDirectory(String name, File rootDirectory) throws RepositoryNotFoundException, ServiceNotEnabledException { - File repositoryDirectory = new File(rootDirectory.getAbsolutePath(), name); + File repositoryDirectory = new File(rootDirectory, name); Repository repository = null; try { repository = new FileRepositoryBuilder().setWorkTree(repositoryDirectory).build(); - new WLBridgedProject(repository, name, repositoryDirectory, snapshotDBAPI).buildRepository(); + new WLBridgedProject(repository, name, writeLatexDataSource).buildRepository(); } catch (FailedConnectionException e) { throw new ServiceNotEnabledException(); } catch (IOException e) { diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java index 82bf45af58..42d839d485 100644 --- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java +++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/WLDataModel.java @@ -1,7 +1,9 @@ package uk.ac.ic.wlgitbridge.writelatex.model; +import uk.ac.ic.wlgitbridge.bridge.CandidateSnapshot; +import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents; import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents; -import uk.ac.ic.wlgitbridge.writelatex.api.SnapshotDBAPI; +import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource; import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException; import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocRequest; import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.exception.InvalidProjectException; @@ -14,7 +16,7 @@ import java.util.Map; /** * Created by Winston on 06/11/14. */ -public class WLDataModel implements SnapshotDBAPI { +public class WLDataModel implements WriteLatexDataSource { private final Map projects; private final WLFileStore fileStore; @@ -41,6 +43,16 @@ public class WLDataModel implements SnapshotDBAPI { return updateProjectWithName(name); } + @Override + public CandidateSnapshot createCandidateSnapshot(RawDirectoryContents rawDirectoryContents) { + return null; + } + + @Override + public void approveCandidateSnapshot(CandidateSnapshot candidateSnapshot) { + + } + private List updateProjectWithName(String name) throws FailedConnectionException, InvalidProjectException { return fileStore.updateForProject(getProjectWithName(name)); }