From 8879cb46dbcaeab850a5473a629738e6e312c444 Mon Sep 17 00:00:00 2001 From: Winston Li Date: Mon, 3 Nov 2014 17:05:21 +0000 Subject: [PATCH] Refactoring. --- services/git-bridge/.idea/workspace.xml | 705 ++++++++++++------ .../application/WLGitBridgeServer.java | 14 +- .../application/jetty/NullLogger.java | 85 +++ .../ac/ic/wlgitbridge/git/WLGitServlet.java | 3 + .../wlgitbridge/git/WLReceivePackFactory.java | 42 -- .../git/handler/WLReceivePackFactory.java | 25 + .../{ => handler}/WLRepositoryResolver.java | 2 +- .../{ => handler}/WLUploadPackFactory.java | 2 +- .../handler/hook/CheckNonFastForwardHook.java | 25 + ...InvalidProgramArgumentsExceptionTests.java | 7 + .../application/jetty/NullLoggerTests.java | 16 + .../InvalidRootDirectoryPathException.java | 7 + .../WLReceivePackFactoryTests.java | 2 +- .../WLRepositoryResolverTests.java | 2 +- .../git/{ => handler}/WLUploadPackTests.java | 2 +- .../hook/CheckNonFastForwardHookTests.java | 15 + 16 files changed, 669 insertions(+), 285 deletions(-) create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/application/jetty/NullLogger.java delete mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/git/WLReceivePackFactory.java create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/WLReceivePackFactory.java rename services/git-bridge/src/uk/ac/ic/wlgitbridge/git/{ => handler}/WLRepositoryResolver.java (98%) rename services/git-bridge/src/uk/ac/ic/wlgitbridge/git/{ => handler}/WLUploadPackFactory.java (94%) create mode 100644 services/git-bridge/src/uk/ac/ic/wlgitbridge/git/handler/hook/CheckNonFastForwardHook.java create mode 100644 services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/exception/InvalidProgramArgumentsExceptionTests.java create mode 100644 services/git-bridge/test/uk/ac/ic/wlgitbridge/test/application/jetty/NullLoggerTests.java create mode 100644 services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/exception/InvalidRootDirectoryPathException.java rename services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/{ => handler}/WLReceivePackFactoryTests.java (77%) rename services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/{ => handler}/WLRepositoryResolverTests.java (78%) rename services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/{ => handler}/WLUploadPackTests.java (76%) create mode 100644 services/git-bridge/test/uk/ac/ic/wlgitbridge/test/git/handler/hook/CheckNonFastForwardHookTests.java 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 @@ @@ -555,19 +783,6 @@ - - - + + + + + - - - - + + 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() { + + } + +}