diff --git a/services/git-bridge/.idea/workspace.xml b/services/git-bridge/.idea/workspace.xml
index 50226b577f..e785e1fdda 100644
--- a/services/git-bridge/.idea/workspace.xml
+++ b/services/git-bridge/.idea/workspace.xml
@@ -7,8 +7,20 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -35,68 +47,28 @@
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -105,31 +77,68 @@
-
+
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
@@ -148,9 +157,6 @@
@@ -294,6 +306,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -316,6 +410,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -370,6 +516,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -418,6 +620,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -493,16 +721,16 @@
-
-
-
-
+
+
+
+
@@ -555,19 +783,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -595,6 +810,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -649,6 +877,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -671,25 +915,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
localhost
@@ -716,24 +944,24 @@
-
-
+
+
+
-
+
-
@@ -762,71 +990,28 @@
-
-
-
-
+
+
+
+
-
+
-
+
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -834,21 +1019,21 @@
-
+
-
+
-
+
@@ -906,21 +1091,21 @@
-
+
-
+
-
+
@@ -1000,14 +1185,14 @@
-
+
-
+
@@ -1049,13 +1234,6 @@
-
-
-
-
-
-
-
@@ -1063,13 +1241,6 @@
-
-
-
-
-
-
-
@@ -1077,23 +1248,15 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
@@ -1101,30 +1264,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1133,33 +1272,129 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 eac82a6948..58f5c7af93 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
@@ -3,6 +3,8 @@ package uk.ac.ic.wlgitbridge.application;
import org.eclipse.jetty.server.Server;
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.exception.InvalidRootDirectoryPathException;
@@ -20,6 +22,7 @@ public class WLGitBridgeServer {
private final Server jettyServer;
private final int port;
+ private String rootGitDirectoryPath;
/**
* Constructs an instance of the server.
@@ -29,8 +32,10 @@ public class WLGitBridgeServer {
*/
public WLGitBridgeServer(final int port, String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException {
this.port = port;
+ this.rootGitDirectoryPath = rootGitDirectoryPath;
+ Log.setLog(new NullLogger());
jettyServer = new Server(port);
- configureJettyServer(rootGitDirectoryPath);
+ configureJettyServer();
}
/**
@@ -39,6 +44,9 @@ public class WLGitBridgeServer {
public void start() {
try {
jettyServer.start();
+ System.out.println("WriteLatex-Git Bridge server started");
+ System.out.println("Listening on port: " + port);
+ System.out.println("Root git directory path: " + rootGitDirectoryPath);
} catch (BindException e) {
e.printStackTrace();
} catch (Exception e) {
@@ -51,12 +59,12 @@ public class WLGitBridgeServer {
}
}
- private void configureJettyServer(String rootGitDirectoryPath) throws ServletException, InvalidRootDirectoryPathException {
+ private void configureJettyServer() throws ServletException, InvalidRootDirectoryPathException {
final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.addServlet(
new ServletHolder(
- new WLGitServlet(servletContextHandler,rootGitDirectoryPath)),
+ new WLGitServlet(servletContextHandler, rootGitDirectoryPath)),
"/*"
);
jettyServer.setHandler(servletContextHandler);
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/jetty/NullLogger.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/jetty/NullLogger.java
new file mode 100644
index 0000000000..e996bd50c3
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/application/jetty/NullLogger.java
@@ -0,0 +1,85 @@
+package uk.ac.ic.wlgitbridge.application.jetty;
+
+import org.eclipse.jetty.util.log.Logger;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class NullLogger implements Logger {
+
+ @Override
+ public String getName() {
+ return "null_logger";
+ }
+
+ @Override
+ public void warn(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void warn(Throwable throwable) {
+
+ }
+
+ @Override
+ public void warn(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public void info(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void info(Throwable throwable) {
+
+ }
+
+ @Override
+ public void info(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isDebugEnabled() {
+ return false;
+ }
+
+ @Override
+ public void setDebugEnabled(boolean b) {
+
+ }
+
+ @Override
+ public void debug(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void debug(String s, long l) {
+
+ }
+
+ @Override
+ public void debug(Throwable throwable) {
+
+ }
+
+ @Override
+ public void debug(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public Logger getLogger(String s) {
+ return this;
+ }
+
+ @Override
+ public void ignore(Throwable throwable) {
+
+ }
+
+}
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 1042cea476..c84600552c 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
@@ -3,6 +3,9 @@ package uk.ac.ic.wlgitbridge.git;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jgit.http.server.GitServlet;
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 javax.servlet.ServletException;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLReceivePackFactory.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLReceivePackFactory.java
deleted file mode 100644
index 3e650aaac5..0000000000
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLReceivePackFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package uk.ac.ic.wlgitbridge.git;
-
-import org.eclipse.jgit.lib.RefUpdate;
-import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.transport.PreReceiveHook;
-import org.eclipse.jgit.transport.ReceiveCommand;
-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 javax.servlet.http.HttpServletRequest;
-import java.util.Collection;
-
-/**
- * Created by Winston on 02/11/14.
- */
-/* */
-public class WLReceivePackFactory implements ReceivePackFactory {
-
- @Override
- public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException {
- ReceivePack receivePack = new ReceivePack(repository);
- receivePack.setPreReceiveHook(new PreReceiveHook() {
- @Override
- public void onPreReceive(ReceivePack receivePack, Collection receiveCommands) {
- System.out.println("Size: " + receiveCommands.size());
- for (ReceiveCommand receiveCommand : receiveCommands) {
- System.out.println(receiveCommand);
- System.out.println(receiveCommand.getMessage());
- System.out.println(receiveCommand.getType());
- System.out.println(receiveCommand.getResult());
- System.out.println(receiveCommand.getRefName());
- receiveCommand.setResult(RefUpdate.Result.REJECTED);
- }
- receivePack.sendError("hello this is not a fast forward");
- }
- });
- return receivePack;
- }
-
-}
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
new file mode 100644
index 0000000000..95911ae931
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java
@@ -0,0 +1,25 @@
+package uk.ac.ic.wlgitbridge.git.handler;
+
+import org.eclipse.jgit.lib.Repository;
+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 javax.servlet.http.HttpServletRequest;
+
+/**
+ * Created by Winston on 02/11/14.
+ */
+/* */
+public class WLReceivePackFactory implements ReceivePackFactory {
+
+ @Override
+ public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException {
+ ReceivePack receivePack = new ReceivePack(repository);
+ receivePack.setPreReceiveHook(new CheckNonFastForwardHook());
+ return receivePack;
+ }
+
+}
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLRepositoryResolver.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
similarity index 98%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLRepositoryResolver.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
index 7180f08234..b17a5267da 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLRepositoryResolver.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.git;
+package uk.ac.ic.wlgitbridge.git.handler;
import org.eclipse.jgit.api.AddCommand;
import org.eclipse.jgit.api.CommitCommand;
diff --git a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLUploadPackFactory.java b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLUploadPackFactory.java
similarity index 94%
rename from services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLUploadPackFactory.java
rename to services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLUploadPackFactory.java
index 6493b06f71..103946e5a9 100644
--- a/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLUploadPackFactory.java
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLUploadPackFactory.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.git;
+package uk.ac.ic.wlgitbridge.git.handler;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.UploadPack;
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
new file mode 100644
index 0000000000..cde3e83cdb
--- /dev/null
+++ b/services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/CheckNonFastForwardHook.java
@@ -0,0 +1,25 @@
+package uk.ac.ic.wlgitbridge.git.handler.hook;
+
+import org.eclipse.jgit.lib.RefUpdate;
+import org.eclipse.jgit.transport.PreReceiveHook;
+import org.eclipse.jgit.transport.ReceiveCommand;
+import org.eclipse.jgit.transport.ReceivePack;
+
+import java.util.Collection;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class CheckNonFastForwardHook implements PreReceiveHook {
+
+ @Override
+ public void onPreReceive(ReceivePack receivePack, Collection receiveCommands) {
+ for (ReceiveCommand receiveCommand : receiveCommands) {
+ if (receiveCommand.getType() == ReceiveCommand.Type.UPDATE_NONFASTFORWARD) {
+ receivePack.sendError("You can't do a force push");
+ receiveCommand.setResult(RefUpdate.Result.REJECTED);
+ }
+ }
+ }
+
+}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/exception/InvalidProgramArgumentsExceptionTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/exception/InvalidProgramArgumentsExceptionTests.java
new file mode 100644
index 0000000000..a5f96076a7
--- /dev/null
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/exception/InvalidProgramArgumentsExceptionTests.java
@@ -0,0 +1,7 @@
+package uk.ac.ic.wlgitbridge.test.application.exception;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class InvalidProgramArgumentsExceptionTests {
+}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/jetty/NullLoggerTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/jetty/NullLoggerTests.java
new file mode 100644
index 0000000000..6e360e9302
--- /dev/null
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/jetty/NullLoggerTests.java
@@ -0,0 +1,16 @@
+package uk.ac.ic.wlgitbridge.test.application.jetty;
+
+import org.junit.Test;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class NullLoggerTests {
+
+ @Test
+ public void nothingToTest() {
+
+ }
+
+
+}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/exception/InvalidRootDirectoryPathException.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/exception/InvalidRootDirectoryPathException.java
new file mode 100644
index 0000000000..7adcac4ddb
--- /dev/null
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/exception/InvalidRootDirectoryPathException.java
@@ -0,0 +1,7 @@
+package uk.ac.ic.wlgitbridge.test.git.exception;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class InvalidRootDirectoryPathException {
+}
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLReceivePackFactoryTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLReceivePackFactoryTests.java
similarity index 77%
rename from services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLReceivePackFactoryTests.java
rename to services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLReceivePackFactoryTests.java
index 870ea5810d..aed492ff5b 100644
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLReceivePackFactoryTests.java
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLReceivePackFactoryTests.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.test.git;
+package uk.ac.ic.wlgitbridge.test.git.handler;
import org.junit.Test;
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLRepositoryResolverTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLRepositoryResolverTests.java
similarity index 78%
rename from services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLRepositoryResolverTests.java
rename to services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLRepositoryResolverTests.java
index 74587c9bf5..c5f0b99ae8 100644
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLRepositoryResolverTests.java
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLRepositoryResolverTests.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.test.git;
+package uk.ac.ic.wlgitbridge.test.git.handler;
import org.junit.Test;
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLUploadPackTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLUploadPackTests.java
similarity index 76%
rename from services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLUploadPackTests.java
rename to services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLUploadPackTests.java
index 4a0d7c2943..9199c4c9d0 100644
--- a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/WLUploadPackTests.java
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/WLUploadPackTests.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.test.git;
+package uk.ac.ic.wlgitbridge.test.git.handler;
import org.junit.Test;
diff --git a/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/hook/CheckNonFastForwardHookTests.java b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/hook/CheckNonFastForwardHookTests.java
new file mode 100644
index 0000000000..3824d1aef6
--- /dev/null
+++ b/services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/hook/CheckNonFastForwardHookTests.java
@@ -0,0 +1,15 @@
+package uk.ac.ic.wlgitbridge.test.git.handler.hook;
+
+import org.junit.Test;
+
+/**
+ * Created by Winston on 03/11/14.
+ */
+public class CheckNonFastForwardHookTests {
+
+ @Test
+ public void nothingToTest() {
+
+ }
+
+}