diff --git a/services/git-bridge/.idea/workspace.xml b/services/git-bridge/.idea/workspace.xml index 5cbd575808..dc4f4b7390 100644 --- a/services/git-bridge/.idea/workspace.xml +++ b/services/git-bridge/.idea/workspace.xml @@ -2,7 +2,16 @@ + + + + + + + + + @@ -25,81 +34,101 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + @@ -119,8 +148,38 @@ @@ -136,7 +195,7 @@ - + @@ -193,6 +252,50 @@ + + + - - + + + + + + + + + - - + + + + + + + + + + + + - + @@ -434,30 +623,30 @@ - + + - + + - + - - @@ -574,14 +763,6 @@ - - - - - - - - @@ -590,34 +771,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + diff --git a/services/git-bridge/module_writelatex-git-bridge.xml b/services/git-bridge/module_writelatex-git-bridge.xml index 013d4614e5..db70a13fb6 100644 --- a/services/git-bridge/module_writelatex-git-bridge.xml +++ b/services/git-bridge/module_writelatex-git-bridge.xml @@ -17,20 +17,42 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -48,6 +70,12 @@ + + + + + + @@ -69,7 +97,23 @@ - + + + + + + + + + + + + + + + + + diff --git a/services/git-bridge/src/uk/ac/ic/Main.java b/services/git-bridge/src/uk/ac/ic/Main.java index b444d8d770..a0cc6d09b8 100644 --- a/services/git-bridge/src/uk/ac/ic/Main.java +++ b/services/git-bridge/src/uk/ac/ic/Main.java @@ -1,120 +1,14 @@ package uk.ac.ic; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jgit.api.AddCommand; -import org.eclipse.jgit.api.CommitCommand; -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.errors.RepositoryNotFoundException; -import org.eclipse.jgit.http.server.GitServlet; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.storage.file.FileRepositoryBuilder; -import org.eclipse.jgit.transport.ReceivePack; -import org.eclipse.jgit.transport.ServiceMayNotContinueException; -import org.eclipse.jgit.transport.UploadPack; -import org.eclipse.jgit.transport.resolver.*; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; +import uk.ac.ic.application.WLGitBridgeApplication; /** * Created by Winston on 01/11/14. */ public class Main { - public static void main(String[] args) throws Exception { - Server server = new Server(8080); - final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); - servletContextHandler.setContextPath("/"); - server.setHandler(servletContextHandler); - GitServlet servlet = new GitServlet(); - servlet.setRepositoryResolver(new RepositoryResolver() { - @Override - public Repository open(HttpServletRequest httpServletRequest, String s) throws RepositoryNotFoundException, ServiceNotAuthorizedException, ServiceNotEnabledException, ServiceMayNotContinueException { - System.out.println(s); - - - File workspace = new File("/Users/Roxy/git-test/hello"); - workspace.mkdirs(); - Repository r = null; - try { - r = new FileRepositoryBuilder().setWorkTree(workspace).build(); - } catch (IOException e) { - e.printStackTrace(); - } - - // if the repository doesn't exist, create it - if (!r.getObjectDatabase().exists()) { - try { - r.create(); - } catch (IOException e) { - e.printStackTrace(); - } - - try { - // import initial content - Git git = new Git(r); - AddCommand cmd = git.add(); - cmd.addFilepattern("."); - cmd.call(); - - CommitCommand co = git.commit(); - co.setAuthor("Winston","wl3912@ic.ac.uk"); - co.setMessage("Initial import of the existing contents"); - co.call(); - } catch (GitAPIException e) { - e.printStackTrace(); - } - } - return r; - } - }); - - servlet.setReceivePackFactory(new ReceivePackFactory() { - @Override - public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException { - return new ReceivePack(repository); - } - }); - - servlet.setUploadPackFactory(new UploadPackFactory() { - @Override - public UploadPack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException { - return new UploadPack(repository); - } - }); - servlet.init(new ServletConfig() { - @Override - public String getServletName() { - return ""; - } - - @Override - public ServletContext getServletContext() { - return servletContextHandler.getServletContext(); - } - - @Override - public String getInitParameter(String s) { - return "default_init_parameter"; - } - - @Override - public Enumeration getInitParameterNames() { - return null; - } - }); - servletContextHandler.addServlet(new ServletHolder(servlet), "/*"); - server.start(); - server.join(); - - + public static void main(String[] args) { + new WLGitBridgeApplication(args).run(); } } diff --git a/services/git-bridge/src/uk/ac/ic/WGBServer.java b/services/git-bridge/src/uk/ac/ic/WGBServer.java deleted file mode 100644 index 98c438a187..0000000000 --- a/services/git-bridge/src/uk/ac/ic/WGBServer.java +++ /dev/null @@ -1,10 +0,0 @@ -package uk.ac.ic; - -/** - * Created by Winston on 02/11/14. - */ -public class WGBServer { - - - -} diff --git a/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeApplication.java b/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeApplication.java new file mode 100644 index 0000000000..83ce7f1a35 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeApplication.java @@ -0,0 +1,26 @@ +package uk.ac.ic.application; + +import javax.servlet.ServletException; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitBridgeApplication { + + public WLGitBridgeApplication(String[] args) { + parseArguments(args); + } + + public void run() { + try { + new WLGitBridgeServer(8080).start(); + } catch (ServletException e) { + e.printStackTrace(); + } + } + + private void parseArguments(String[] args) { + + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeServer.java b/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeServer.java new file mode 100644 index 0000000000..f00f6e987e --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/application/WLGitBridgeServer.java @@ -0,0 +1,48 @@ +package uk.ac.ic.application; + +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import uk.ac.ic.git.WLGitServlet; + +import javax.servlet.ServletException; +import java.net.BindException; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitBridgeServer { + + private final Server jettyServer; + private final int port; + + public WLGitBridgeServer(final int port) throws ServletException { + this.port = port; + jettyServer = new Server(port); + configureJettyServer(); + + } + + public void start() { + try { + jettyServer.start(); + } catch (BindException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + try { + jettyServer.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + private void configureJettyServer() throws ServletException { + final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); + servletContextHandler.setContextPath("/"); + servletContextHandler.addServlet(new ServletHolder(new WLGitServlet(servletContextHandler)), "/*"); + jettyServer.setHandler(servletContextHandler); + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/git/WLGitServlet.java b/services/git-bridge/src/uk/ac/ic/git/WLGitServlet.java new file mode 100644 index 0000000000..88a65fea07 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/git/WLGitServlet.java @@ -0,0 +1,20 @@ +package uk.ac.ic.git; + +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jgit.http.server.GitServlet; + +import javax.servlet.ServletException; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitServlet extends GitServlet { + + public WLGitServlet(ServletContextHandler servletContextHandler) throws ServletException { + setRepositoryResolver(new WLRepositoryResolver()); + setReceivePackFactory(new WLReceivePackFactory()); + setUploadPackFactory(new WLUploadPackFactory()); + init(new WLGitServletConfig(servletContextHandler)); + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/git/WLGitServletConfig.java b/services/git-bridge/src/uk/ac/ic/git/WLGitServletConfig.java new file mode 100644 index 0000000000..e55750f802 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/git/WLGitServletConfig.java @@ -0,0 +1,42 @@ +package uk.ac.ic.git; + +import org.eclipse.jetty.servlet.ServletContextHandler; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import java.util.Enumeration; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitServletConfig implements ServletConfig { + + private static final String SERVLET_NAME = "git-servlet"; + + private ServletContext servletContext; + + public WLGitServletConfig(ServletContextHandler servletContextHandler) { + servletContext = servletContextHandler.getServletContext(); + } + + @Override + public String getServletName() { + return SERVLET_NAME; + } + + @Override + public ServletContext getServletContext() { + return servletContext; + } + + @Override + public String getInitParameter(String s) { + return null; + } + + @Override + public Enumeration getInitParameterNames() { + return null; + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/git/WLReceivePackFactory.java b/services/git-bridge/src/uk/ac/ic/git/WLReceivePackFactory.java new file mode 100644 index 0000000000..51af7b4f6a --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/git/WLReceivePackFactory.java @@ -0,0 +1,21 @@ +package uk.ac.ic.git; + +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 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 { + return new ReceivePack(repository); + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/git/WLRepositoryResolver.java b/services/git-bridge/src/uk/ac/ic/git/WLRepositoryResolver.java new file mode 100644 index 0000000000..d4ae308a04 --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/git/WLRepositoryResolver.java @@ -0,0 +1,64 @@ +package uk.ac.ic.git; + +import org.eclipse.jgit.api.AddCommand; +import org.eclipse.jgit.api.CommitCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.errors.RepositoryNotFoundException; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.storage.file.FileRepositoryBuilder; +import org.eclipse.jgit.transport.ServiceMayNotContinueException; +import org.eclipse.jgit.transport.resolver.RepositoryResolver; +import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; +import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; + +/** + * Created by Winston on 02/11/14. + */ +public class WLRepositoryResolver implements RepositoryResolver { + + @Override + public Repository open(HttpServletRequest httpServletRequest, String s) throws RepositoryNotFoundException, ServiceNotAuthorizedException, ServiceNotEnabledException, ServiceMayNotContinueException { + System.out.println(s); + + + File workspace = new File("/Users/Roxy/git-test/hello"); + workspace.mkdirs(); + Repository r = null; + try { + r = new FileRepositoryBuilder().setWorkTree(workspace).build(); + } catch (IOException e) { + e.printStackTrace(); + } + + // if the repository doesn't exist, create it + if (!r.getObjectDatabase().exists()) { + try { + r.create(); + } catch (IOException e) { + e.printStackTrace(); + } + + try { + // import initial content + Git git = new Git(r); + AddCommand cmd = git.add(); + cmd.addFilepattern("."); + cmd.call(); + + CommitCommand co = git.commit(); + co.setAuthor("Winston", "wl3912@ic.ac.uk"); + co.setMessage("Initial import of the existing contents"); + co.call(); + } catch (GitAPIException e) { + e.printStackTrace(); + } + } + return r; + } + +} diff --git a/services/git-bridge/src/uk/ac/ic/git/WLUploadPackFactory.java b/services/git-bridge/src/uk/ac/ic/git/WLUploadPackFactory.java new file mode 100644 index 0000000000..a80d66978a --- /dev/null +++ b/services/git-bridge/src/uk/ac/ic/git/WLUploadPackFactory.java @@ -0,0 +1,19 @@ +package uk.ac.ic.git; + +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.transport.UploadPack; +import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; +import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; +import org.eclipse.jgit.transport.resolver.UploadPackFactory; + +import javax.servlet.http.HttpServletRequest; + +/** + * Created by Winston on 02/11/14. + */ +public class WLUploadPackFactory implements UploadPackFactory { + @Override + public UploadPack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException { + return new UploadPack(repository); + } +} diff --git a/services/git-bridge/test/uk/ac/ic/test/MainTests.java b/services/git-bridge/test/uk/ac/ic/test/MainTests.java index f5724bd136..80790493aa 100644 --- a/services/git-bridge/test/uk/ac/ic/test/MainTests.java +++ b/services/git-bridge/test/uk/ac/ic/test/MainTests.java @@ -1,7 +1,15 @@ package uk.ac.ic.test; +import org.junit.Test; + /** * Created by Winston on 02/11/14. */ public class MainTests { + + @Test + public void nothingToTest() { + + } + } diff --git a/services/git-bridge/test/uk/ac/ic/test/WGBServerTests.java b/services/git-bridge/test/uk/ac/ic/test/WGBServerTests.java deleted file mode 100644 index aa33f459ce..0000000000 --- a/services/git-bridge/test/uk/ac/ic/test/WGBServerTests.java +++ /dev/null @@ -1,7 +0,0 @@ -package uk.ac.ic.test; - -/** - * Created by Winston on 02/11/14. - */ -public class WGBServerTests { -} diff --git a/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java b/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java new file mode 100644 index 0000000000..e08d26cd28 --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.application; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitBridgeApplicationTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java b/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java new file mode 100644 index 0000000000..496965648d --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.application; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitBridgeServerTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletConfigTests.java b/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletConfigTests.java new file mode 100644 index 0000000000..93ef372565 --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletConfigTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.git; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitServletConfigTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletTests.java b/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletTests.java new file mode 100644 index 0000000000..407e9ac52b --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/git/WLGitServletTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.git; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLGitServletTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java b/services/git-bridge/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java new file mode 100644 index 0000000000..05d4cc4602 --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.git; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLReceivePackFactoryTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java b/services/git-bridge/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java new file mode 100644 index 0000000000..a15e0498df --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.git; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLRepositoryResolverTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/test/uk/ac/ic/test/git/WLUploadPackTests.java b/services/git-bridge/test/uk/ac/ic/test/git/WLUploadPackTests.java new file mode 100644 index 0000000000..c419565955 --- /dev/null +++ b/services/git-bridge/test/uk/ac/ic/test/git/WLUploadPackTests.java @@ -0,0 +1,15 @@ +package uk.ac.ic.test.git; + +import org.junit.Test; + +/** + * Created by Winston on 02/11/14. + */ +public class WLUploadPackTests { + + @Test + public void nothingToTest() { + + } + +} diff --git a/services/git-bridge/writelatex-git-bridge.iml b/services/git-bridge/writelatex-git-bridge.iml index e6357ffab5..96d82a6bac 100644 --- a/services/git-bridge/writelatex-git-bridge.iml +++ b/services/git-bridge/writelatex-git-bridge.iml @@ -12,6 +12,17 @@ + + + + + + + + + + + diff --git a/services/git-bridge/writelatex-git-bridge.xml b/services/git-bridge/writelatex-git-bridge.xml index bdaa0ba1e3..04830ad625 100644 --- a/services/git-bridge/writelatex-git-bridge.xml +++ b/services/git-bridge/writelatex-git-bridge.xml @@ -92,6 +92,25 @@ + + + + + + + + + + + + + + + + + + +