diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/SnapshotPushPostbackHandler.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/SnapshotPushPostbackHandler.java
new file mode 100644
index 0000000000..9be9605b6d
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/SnapshotPushPostbackHandler.java
@@ -0,0 +1,33 @@
+package uk.ac.ic.wlgitbridge.application;
+
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Created by Winston on 16/11/14.
+ */
+public class SnapshotPushPostbackHandler extends AbstractHandler {
+
+ @Override
+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
+// System.out.println("handling");
+// System.out.println(request.getMethod());
+// response.setContentType("text/html;charset=utf-8");
+// response.setStatus(HttpServletResponse.SC_OK);
+ baseRequest.setHandled(false);
+// System.out.println("method: " + request.getMethod());
+// System.out.println("pathInfo: " + request.getPathInfo());
+// System.out.println("contextPath: " + request.getContextPath());
+// System.out.println("pathtranslated: " + request.getPathTranslated());
+// System.out.println("queryString: " + request.getQueryString());
+// System.out.println("remoteUser: " + request.getRemoteUser());
+// System.out.println("requestURI: " + request.getRequestURI());
+// response.getWriter().println("
Hello World
");
+ }
+
+}
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 0972a61c9f..3c7560eac2 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
@@ -1,12 +1,15 @@
package uk.ac.ic.wlgitbridge.application;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.server.handler.ResourceHandler;
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.servlet.WLGitServlet;
import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException;
+import uk.ac.ic.wlgitbridge.git.servlet.WLGitServlet;
import uk.ac.ic.wlgitbridge.writelatex.model.WLDataModel;
import javax.servlet.ServletException;
@@ -61,6 +64,16 @@ public class WLGitBridgeServer {
}
private void configureJettyServer() throws ServletException, InvalidRootDirectoryPathException {
+ HandlerCollection handlers = new HandlerCollection();
+ handlers.setHandlers(new Handler[] {
+ initResourceHandler(),
+ new SnapshotPushPostbackHandler(),
+ initGitHandler()
+ });
+ jettyServer.setHandler(handlers);
+ }
+
+ private Handler initGitHandler() throws ServletException, InvalidRootDirectoryPathException {
final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.addServlet(
@@ -68,7 +81,13 @@ public class WLGitBridgeServer {
new WLGitServlet(servletContextHandler, new WLDataModel(rootGitDirectoryPath), rootGitDirectoryPath)),
"/*"
);
- jettyServer.setHandler(servletContextHandler);
+ return servletContextHandler;
+ }
+
+ private Handler initResourceHandler() {
+ ResourceHandler resourceHandler = new ResourceHandler();
+ resourceHandler.setResourceBase(rootGitDirectoryPath);
+ return resourceHandler;
}
}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawFile.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawFile.java
new file mode 100644
index 0000000000..7d34c90aa6
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/RawFile.java
@@ -0,0 +1,11 @@
+package uk.ac.ic.wlgitbridge.bridge;
+
+/**
+ * Created by Winston on 16/11/14.
+ */
+public interface RawFile {
+
+ public String getPath();
+ public byte[] getContents();
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java
index b803e9c7d4..3a53fb42b9 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/bridge/WriteLatexDataSource.java
@@ -2,7 +2,7 @@ package uk.ac.ic.wlgitbridge.bridge;
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.SnapshotPostException;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotPostException;
import java.util.List;
@@ -11,8 +11,8 @@ import java.util.List;
*/
public interface WriteLatexDataSource {
- public boolean repositoryExists(String name) throws FailedConnectionException;
- public List getWritableRepositories(String name) throws FailedConnectionException, InvalidProjectException;
- public void putDirectoryContentsToProjectWithName(String name, RawDirectoryContents directoryContents) throws SnapshotPostException;
+ public boolean repositoryExists(String projectName) throws FailedConnectionException;
+ public List getWritableRepositories(String projectName) throws FailedConnectionException, InvalidProjectException;
+ public void putDirectoryContentsToProjectWithName(String projectName, RawDirectoryContents directoryContents) throws SnapshotPostException;
}
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
index 6fee4d0919..0639a363e9 100644
--- 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
@@ -8,8 +8,8 @@ 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 uk.ac.ic.wlgitbridge.writelatex.model.OutOfDateException;
-import uk.ac.ic.wlgitbridge.writelatex.model.SnapshotPostException;
+import uk.ac.ic.wlgitbridge.writelatex.OutOfDateException;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotPostException;
import java.io.IOException;
import java.util.Collection;
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
index f3a6e384bb..e78e1531b7 100644
--- 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
@@ -1,6 +1,6 @@
package uk.ac.ic.wlgitbridge.git.handler.hook.exception;
-import uk.ac.ic.wlgitbridge.writelatex.model.SnapshotPostException;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotPostException;
import java.util.Arrays;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidFilesException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidFilesException.java
similarity index 86%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidFilesException.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidFilesException.java
index 9a40f086f4..77bc3694c7 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidFilesException.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidFilesException.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
+package uk.ac.ic.wlgitbridge.writelatex;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidProjectException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidProjectException.java
similarity index 86%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidProjectException.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidProjectException.java
index 9c5482ad5a..5763cd1948 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/InvalidProjectException.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/InvalidProjectException.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
+package uk.ac.ic.wlgitbridge.writelatex;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/OutOfDateException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/OutOfDateException.java
similarity index 86%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/OutOfDateException.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/OutOfDateException.java
index b171c06415..a4944d4497 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/OutOfDateException.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/OutOfDateException.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
+package uk.ac.ic.wlgitbridge.writelatex;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/SnapshotPostException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotPostException.java
similarity index 83%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/SnapshotPostException.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotPostException.java
index 1edaf1a041..3b716e0ad6 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/SnapshotPostException.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/SnapshotPostException.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
+package uk.ac.ic.wlgitbridge.writelatex;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/UnexpectedErrorException.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/UnexpectedErrorException.java
similarity index 86%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/UnexpectedErrorException.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/UnexpectedErrorException.java
index 0bad759ce3..9775001f60 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/model/UnexpectedErrorException.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/UnexpectedErrorException.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.writelatex.model;
+package uk.ac.ic.wlgitbridge.writelatex;
import java.util.List;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/request/getforversion/SnapshotFile.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/request/getforversion/SnapshotFile.java
index d1bffeaaed..7afae5143a 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/request/getforversion/SnapshotFile.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/api/request/getforversion/SnapshotFile.java
@@ -2,19 +2,14 @@ package uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
import uk.ac.ic.wlgitbridge.writelatex.api.request.base.JSONSource;
import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.concurrent.ExecutionException;
-
/**
* Created by Winston on 06/11/14.
*/
-public class SnapshotFile implements JSONSource {
+public class SnapshotFile implements JSONSource, RawFile {
protected byte[] contents;
private String path;
@@ -24,18 +19,20 @@ public class SnapshotFile implements JSONSource {
}
@Override
- public void fromJSON(JsonElement json) throws FailedConnectionException {
- JsonArray jsonArray = json.getAsJsonArray();
- getContentsFromJSON(jsonArray);
- getPathFromJSON(jsonArray);
+ public String getPath() {
+ return path;
}
+ @Override
public byte[] getContents() {
return contents;
}
- public String getPath() {
- return path;
+ @Override
+ public void fromJSON(JsonElement json) throws FailedConnectionException {
+ JsonArray jsonArray = json.getAsJsonArray();
+ getContentsFromJSON(jsonArray);
+ getPathFromJSON(jsonArray);
}
protected void getContentsFromJSON(JsonArray jsonArray) throws FailedConnectionException {
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/RepositoryFile.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/RepositoryFile.java
new file mode 100644
index 0000000000..c5b73c5aed
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/RepositoryFile.java
@@ -0,0 +1,28 @@
+package uk.ac.ic.wlgitbridge.writelatex.filestore;
+
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
+
+import java.util.Map.Entry;
+
+/**
+ * Created by Winston on 16/11/14.
+ */
+public class RepositoryFile implements RawFile {
+
+ private final Entry fileContents;
+
+ public RepositoryFile(Entry fileContents) {
+ this.fileContents = fileContents;
+ }
+
+ @Override
+ public String getPath() {
+ return fileContents.getKey();
+ }
+
+ @Override
+ public byte[] getContents() {
+ return fileContents.getValue();
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/ByteBlob.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/ByteBlob.java
index 7b0f6cb514..b590b7c826 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/ByteBlob.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/ByteBlob.java
@@ -3,7 +3,7 @@ package uk.ac.ic.wlgitbridge.writelatex.filestore.blob;
/**
* Created by Winston on 14/11/14.
*/
-public abstract class ByteBlob extends Blob {
+public class ByteBlob extends Blob {
private final byte[] contents;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/RawFileBlob.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/RawFileBlob.java
new file mode 100644
index 0000000000..97f970e2b0
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/RawFileBlob.java
@@ -0,0 +1,14 @@
+package uk.ac.ic.wlgitbridge.writelatex.filestore.blob;
+
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
+
+/**
+ * Created by Winston on 14/11/14.
+ */
+public class RawFileBlob extends ByteBlob {
+
+ public RawFileBlob(RawFile rawFile) {
+ super(rawFile.getContents());
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/SnapshotFileBlob.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/SnapshotFileBlob.java
deleted file mode 100644
index 6ecd13e4ca..0000000000
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/blob/SnapshotFileBlob.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package uk.ac.ic.wlgitbridge.writelatex.filestore.blob;
-
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotFile;
-
-/**
- * Created by Winston on 14/11/14.
- */
-public class SnapshotFileBlob extends ByteBlob {
-
- public SnapshotFileBlob(SnapshotFile snapshotFile) {
- super(snapshotFile.getContents());
- }
-
-}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java
index 58964a66e9..15561871dd 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/BlobNode.java
@@ -1,9 +1,9 @@
package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotFile;
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
import uk.ac.ic.wlgitbridge.writelatex.filestore.blob.Blob;
-import uk.ac.ic.wlgitbridge.writelatex.filestore.blob.SnapshotFileBlob;
+import uk.ac.ic.wlgitbridge.writelatex.filestore.blob.ByteBlob;
+import uk.ac.ic.wlgitbridge.writelatex.filestore.blob.RawFileBlob;
import java.util.Map;
@@ -12,11 +12,11 @@ import java.util.Map;
*/
public class BlobNode extends FileNode {
- private SnapshotFileBlob blob;
+ private ByteBlob blob;
- public BlobNode(SnapshotFile snapshotFile, Map context) throws FailedConnectionException {
- super(snapshotFile, context);
- blob = new SnapshotFileBlob(snapshotFile);
+ public BlobNode(RawFile rawFile, Map context) {
+ super(rawFile, context);
+ blob = new RawFileBlob(rawFile);
}
@Override
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java
index 2e9890796d..4d8bf71f8c 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/FileNode.java
@@ -1,7 +1,7 @@
package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
+import uk.ac.ic.wlgitbridge.bridge.RawFile;
import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
-import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotFile;
import uk.ac.ic.wlgitbridge.writelatex.filestore.blob.Blob;
import java.io.File;
@@ -18,8 +18,12 @@ public abstract class FileNode {
private final String filePath;
private final boolean unchanged;
- public FileNode(SnapshotFile snapshotFile, Map context) throws FailedConnectionException {
- filePath = snapshotFile.getPath();
+ public FileNode(RawFile file, Map context) {
+ this(file.getPath(), context);
+ }
+
+ public FileNode(String filePath, Map context) {
+ this.filePath = filePath;
FileNode currentFileNode = context.get(filePath);
unchanged = currentFileNode != null && equals(currentFileNode);
}
@@ -45,4 +49,14 @@ public abstract class FileNode {
protected abstract Blob getBlob();
+ @Override
+ public boolean equals(Object obj) {
+ return obj instanceof FileNode && filePath.equals(((FileNode) obj).filePath);
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(unchanged);
+ }
+
}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java
index 453ef27ec8..cd7085ffed 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/node/WLDirectoryNode.java
@@ -1,8 +1,10 @@
package uk.ac.ic.wlgitbridge.writelatex.filestore.node;
+import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents;
import uk.ac.ic.wlgitbridge.writelatex.api.request.exception.FailedConnectionException;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotFile;
+import uk.ac.ic.wlgitbridge.writelatex.filestore.RepositoryFile;
import uk.ac.ic.wlgitbridge.writelatex.filestore.store.FileIndexStore;
import uk.ac.ic.wlgitbridge.writelatex.model.Snapshot;
@@ -10,6 +12,7 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
/**
* Created by Winston on 08/11/14.
@@ -20,8 +23,12 @@ public class WLDirectoryNode {
private FileIndexStore fileIndexStore;
public WLDirectoryNode() {
- fileNodeTable = new HashMap();
- fileIndexStore = new FileIndexStore();
+ this(new HashMap(), new FileIndexStore());
+ }
+
+ public WLDirectoryNode(Map fileNodeTable, FileIndexStore fileIndexStore) {
+ this.fileNodeTable = fileNodeTable;
+ this.fileIndexStore = fileIndexStore;
}
public List updateFromSnapshot(Snapshot snapshot) throws FailedConnectionException {
@@ -36,12 +43,22 @@ public class WLDirectoryNode {
AttachmentNode attachmentNode = new AttachmentNode(att, fileNodeTable, fileIndexStore);
updatedFileNodeTable.put(attachmentNode.getFilePath(), attachmentNode);
}
- fileNodeTable = updatedFileNodeTable;
LinkedList fileNodes = new LinkedList(updatedFileNodeTable.values());
+ fileNodeTable = updatedFileNodeTable;
fileIndexStore = new FileIndexStore(fileNodes);
return fileNodes;
}
+ public WLDirectoryNode createFromRawDirectoryContents(RawDirectoryContents rawDirectoryContents) {
+ Map candidateFileNodeTable = new HashMap();
+ for (Entry fileContents : rawDirectoryContents.getFileContentsTable().entrySet()) {
+ BlobNode blobNode = new BlobNode(new RepositoryFile(fileContents), fileNodeTable);
+ candidateFileNodeTable.put(blobNode.getFilePath(), blobNode);
+ }
+ return new WLDirectoryNode(candidateFileNodeTable,
+ new FileIndexStore(new LinkedList(candidateFileNodeTable.values())));
+ }
+
@Override
public String toString() {
return fileNodeTable.toString();
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java
index 67f600027d..d7ab4c7bf8 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/filestore/store/WLFileStore.java
@@ -1,5 +1,6 @@
package uk.ac.ic.wlgitbridge.writelatex.filestore.store;
+import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents;
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;
@@ -50,6 +51,10 @@ public class WLFileStore {
return writableRepositories;
}
+ public WLDirectoryNode createCandidateDirectoryNodeForProjectWithContents(WLProject project, RawDirectoryContents directoryContents) {
+ return getDirectoryNodeForProjectName(project.getName()).createFromRawDirectoryContents(directoryContents);
+ }
+
private WLDirectoryNode getDirectoryNodeForProjectName(String projectName) {
WLDirectoryNode directoryNode = fileStore.get(projectName);
if (directoryNode == null) {
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 8793329667..02c28e0eda 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
@@ -3,9 +3,11 @@ package uk.ac.ic.wlgitbridge.writelatex.model;
import uk.ac.ic.wlgitbridge.bridge.RawDirectoryContents;
import uk.ac.ic.wlgitbridge.bridge.WritableRepositoryContents;
import uk.ac.ic.wlgitbridge.bridge.WriteLatexDataSource;
+import uk.ac.ic.wlgitbridge.writelatex.SnapshotPostException;
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;
+import uk.ac.ic.wlgitbridge.writelatex.filestore.node.WLDirectoryNode;
import uk.ac.ic.wlgitbridge.writelatex.filestore.store.WLFileStore;
import java.util.Arrays;
@@ -27,8 +29,8 @@ public class WLDataModel implements WriteLatexDataSource {
}
@Override
- public boolean repositoryExists(String name) throws FailedConnectionException {
- SnapshotGetDocRequest snapshotGetDocRequest = new SnapshotGetDocRequest(name);
+ public boolean repositoryExists(String projectName) throws FailedConnectionException {
+ SnapshotGetDocRequest snapshotGetDocRequest = new SnapshotGetDocRequest(projectName);
snapshotGetDocRequest.request();
try {
snapshotGetDocRequest.getResult().getVersionID();
@@ -39,14 +41,15 @@ public class WLDataModel implements WriteLatexDataSource {
}
@Override
- public List getWritableRepositories(String name) throws FailedConnectionException, InvalidProjectException {
- return updateProjectWithName(name);
+ public List getWritableRepositories(String projectName) throws FailedConnectionException, InvalidProjectException {
+ return updateProjectWithName(projectName);
}
@Override
- public void putDirectoryContentsToProjectWithName(String name, RawDirectoryContents directoryContents) throws SnapshotPostException {
- System.out.println("Pushing project with name: " + name);
- System.out.println(directoryContents.getFileContentsTable());
+ public void putDirectoryContentsToProjectWithName(String projectName, RawDirectoryContents directoryContents) throws SnapshotPostException {
+ WLDirectoryNode dn = fileStore.createCandidateDirectoryNodeForProjectWithContents(getProjectWithName(projectName), directoryContents);
+ System.out.println("Pushing project with name: " + projectName);
+ System.out.println(dn);
throw new SnapshotPostException() {
@Override