فهرست منبع

Class and package refactoring with unit tests.

Winston Li 12 سال پیش
والد
کامیت
2d8580f02b
22فایلهای تغییر یافته به همراه803 افزوده شده و 190 حذف شده
  1. 372 63
      services/git-bridge/.idea/workspace.xml
  2. 45 1
      services/git-bridge/module_writelatex-git-bridge.xml
  3. 3 109
      services/git-bridge/src/uk/ac/ic/Main.java
  4. 0 10
      services/git-bridge/src/uk/ac/ic/WGBServer.java
  5. 26 0
      services/git-bridge/src/uk/ac/ic/application/WLGitBridgeApplication.java
  6. 48 0
      services/git-bridge/src/uk/ac/ic/application/WLGitBridgeServer.java
  7. 20 0
      services/git-bridge/src/uk/ac/ic/git/WLGitServlet.java
  8. 42 0
      services/git-bridge/src/uk/ac/ic/git/WLGitServletConfig.java
  9. 21 0
      services/git-bridge/src/uk/ac/ic/git/WLReceivePackFactory.java
  10. 64 0
      services/git-bridge/src/uk/ac/ic/git/WLRepositoryResolver.java
  11. 19 0
      services/git-bridge/src/uk/ac/ic/git/WLUploadPackFactory.java
  12. 8 0
      services/git-bridge/test/uk/ac/ic/test/MainTests.java
  13. 0 7
      services/git-bridge/test/uk/ac/ic/test/WGBServerTests.java
  14. 15 0
      services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java
  15. 15 0
      services/git-bridge/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java
  16. 15 0
      services/git-bridge/test/uk/ac/ic/test/git/WLGitServletConfigTests.java
  17. 15 0
      services/git-bridge/test/uk/ac/ic/test/git/WLGitServletTests.java
  18. 15 0
      services/git-bridge/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java
  19. 15 0
      services/git-bridge/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java
  20. 15 0
      services/git-bridge/test/uk/ac/ic/test/git/WLUploadPackTests.java
  21. 11 0
      services/git-bridge/writelatex-git-bridge.iml
  22. 19 0
      services/git-bridge/writelatex-git-bridge.xml

+ 372 - 63
services/git-bridge/.idea/workspace.xml

@@ -2,7 +2,16 @@
 <project version="4">
 <project version="4">
   <component name="ChangeListManager">
   <component name="ChangeListManager">
     <list default="true" id="0c822a5a-f421-4f3c-b941-5c2809c4546f" name="Default" comment="">
     <list default="true" id="0c822a5a-f421-4f3c-b941-5c2809c4546f" name="Default" comment="">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/uk/ac/ic/application/WLGitBridgeServer.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/uk/ac/ic/WGBServer.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/test/uk/ac/ic/test/WGBServerTests.java" afterPath="" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/uk/ac/ic/Main.java" afterPath="$PROJECT_DIR$/src/uk/ac/ic/Main.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java" afterPath="$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/module_writelatex-git-bridge.xml" afterPath="$PROJECT_DIR$/module_writelatex-git-bridge.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/writelatex-git-bridge.iml" afterPath="$PROJECT_DIR$/writelatex-git-bridge.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/writelatex-git-bridge.xml" afterPath="$PROJECT_DIR$/writelatex-git-bridge.xml" />
     </list>
     </list>
     <ignored path="writelatex-git-bridge.iws" />
     <ignored path="writelatex-git-bridge.iws" />
     <ignored path=".idea/workspace.xml" />
     <ignored path=".idea/workspace.xml" />
@@ -25,81 +34,101 @@
   </component>
   </component>
   <component name="FileEditorManager">
   <component name="FileEditorManager">
     <leaf>
     <leaf>
-      <file leaf-file-name="writelatex-git-bridge.iml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/writelatex-git-bridge.iml">
+      <file leaf-file-name="WLGitServlet.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLGitServlet.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="255" max-vertical-offset="345">
-              <caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="390">
+              <caret line="16" column="48" selection-start-line="16" selection-start-column="48" selection-end-line="16" selection-end-column="48" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="README.md" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/README.md">
+      <file leaf-file-name="WLGitBridgeApplicationTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="135">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="LICENSE" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/LICENSE">
+      <file leaf-file-name="WLGitBridgeServerTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="420">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="7" column="37" selection-start-line="7" selection-start-column="37" selection-end-line="12" selection-end-column="5" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="Main.java" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/Main.java">
+      <file leaf-file-name="WLGitServletTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="195" max-vertical-offset="1890">
-              <caret line="35" column="44" selection-start-line="35" selection-start-column="44" selection-end-line="35" selection-end-column="44" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="WGBServer.java" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/WGBServer.java">
+      <file leaf-file-name="WLGitServletConfigTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletConfigTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.07978723" vertical-offset="0" max-vertical-offset="1316">
-              <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="WGBServerTests.java" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/WGBServerTests.java">
+      <file leaf-file-name="WLReceivePackFactoryTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="195">
-              <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="7" column="40" selection-start-line="7" selection-start-column="40" selection-end-line="13" selection-end-column="0" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="MainTests.java" pinned="false" current="false" current-in-tab="false">
+      <file leaf-file-name="WLRepositoryResolverTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="WLUploadPackTests.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLUploadPackTests.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="MainTests.java" pinned="false" current="true" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java">
         <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="195">
-              <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+            <state vertical-scroll-proportion="0.20547946" vertical-offset="0" max-vertical-offset="1095">
+              <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file leaf-file-name="HttpServlet.class" pinned="false" current="false" current-in-tab="false">
-        <entry file="jar://$PROJECT_DIR$/libs/javax.servlet-api-3.1.0.jar!/javax/servlet/http/HttpServlet.class">
+      <file leaf-file-name="WLGitBridgeApplication.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/application/WLGitBridgeApplication.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="660" max-vertical-offset="750">
-              <caret line="44" column="0" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="480">
+              <caret line="23" column="5" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
               <folding />
               <folding />
             </state>
             </state>
           </provider>
           </provider>
@@ -119,8 +148,38 @@
     <option name="changedFiles">
     <option name="changedFiles">
       <list>
       <list>
         <option value="$PROJECT_DIR$/writelatex-git-bridge.iml" />
         <option value="$PROJECT_DIR$/writelatex-git-bridge.iml" />
-        <option value="$PROJECT_DIR$/src/uk/ac/ic/Main.java" />
+        <option value="$PROJECT_DIR$/writelatex-git-bridge.xml" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WritelatexRepositoryResolver.java" />
         <option value="$PROJECT_DIR$/src/uk/ac/ic/WGBServer.java" />
         <option value="$PROJECT_DIR$/src/uk/ac/ic/WGBServer.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/WGBServerTests.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/GitServletConfig.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLGitServletConfig.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WriteLatexGitBridgeServer.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLGBridgeServer.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WriteLatexReceivePackFactory.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLReceivePackFactory.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WriteLatexRepositoryResolver.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLRepositoryResolver.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WriteLatexUploadPackFactory.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLUploadPackFactory.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLProjectGitServlet.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/WriteLatexGitBridgeServerTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/WLGitBridgeServerTests.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLGitServlet.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLGitBridgeServer.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/Main.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/WLGitBridgeApplication.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/application/WLGitBridgeApplication.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/application/git/WLGitServlet.java" />
+        <option value="$PROJECT_DIR$/src/uk/ac/ic/git/WLGitServlet.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletConfigTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/git/WLUploadPackTests.java" />
+        <option value="$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java" />
       </list>
       </list>
     </option>
     </option>
   </component>
   </component>
@@ -136,7 +195,7 @@
     <OptionsSetting value="true" id="Update" />
     <OptionsSetting value="true" id="Update" />
     <OptionsSetting value="true" id="Status" />
     <OptionsSetting value="true" id="Status" />
     <OptionsSetting value="true" id="Edit" />
     <OptionsSetting value="true" id="Edit" />
-    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="1" id="Add" />
     <ConfirmationsSetting value="0" id="Remove" />
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
   </component>
   <component name="ProjectReloadState">
   <component name="ProjectReloadState">
@@ -193,6 +252,90 @@
               <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
               <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
             </PATH_ELEMENT>
             </PATH_ELEMENT>
           </PATH>
           </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="test" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="test" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="git" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="test" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="test" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="application" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="ic" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="writelatex-git-bridge" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="ic" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="git" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
           <PATH>
           <PATH>
             <PATH_ELEMENT>
             <PATH_ELEMENT>
               <option name="myItemId" value="writelatex-git-bridge" />
               <option name="myItemId" value="writelatex-git-bridge" />
@@ -210,6 +353,10 @@
               <option name="myItemId" value="ic" />
               <option name="myItemId" value="ic" />
               <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
               <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
             </PATH_ELEMENT>
             </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="application" />
+              <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
+            </PATH_ELEMENT>
           </PATH>
           </PATH>
           <PATH>
           <PATH>
             <PATH_ELEMENT>
             <PATH_ELEMENT>
@@ -252,23 +399,27 @@
     <property name="OverrideImplement.combined" value="true" />
     <property name="OverrideImplement.combined" value="true" />
     <property name="OverrideImplement.overriding.sorted" value="false" />
     <property name="OverrideImplement.overriding.sorted" value="false" />
     <property name="FullScreen" value="false" />
     <property name="FullScreen" value="false" />
+    <property name="restartRequiresConfirmation" value="true" />
   </component>
   </component>
   <component name="RecentsManager">
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
     <key name="CopyFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/libs" />
       <recent name="$PROJECT_DIR$/libs" />
     </key>
     </key>
+    <key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
+      <recent name="uk.ac.ic" />
+    </key>
     <key name="MoveFile.RECENT_KEYS">
     <key name="MoveFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/libs" />
       <recent name="$PROJECT_DIR$/libs" />
     </key>
     </key>
   </component>
   </component>
-  <component name="RunManager" selected="Application.Main">
-    <configuration default="false" name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+  <component name="RunManager" selected="Application.writelatex-git-bridge">
+    <configuration default="false" name="writelatex-git-bridge" type="Application" factoryName="Application" temporary="true">
       <option name="MAIN_CLASS_NAME" value="uk.ac.ic.Main" />
       <option name="MAIN_CLASS_NAME" value="uk.ac.ic.Main" />
-      <option name="VM_PARAMETERS" />
-      <option name="PROGRAM_PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
       <option name="ENABLE_SWING_INSPECTOR" value="false" />
       <option name="ENABLE_SWING_INSPECTOR" value="false" />
       <option name="ENV_VARIABLES" />
       <option name="ENV_VARIABLES" />
       <option name="PASS_PARENT_ENVS" value="true" />
       <option name="PASS_PARENT_ENVS" value="true" />
@@ -313,6 +464,21 @@
       <option name="PORT" value="5005" />
       <option name="PORT" value="5005" />
       <method />
       <method />
     </configuration>
     </configuration>
+    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
+      <ExternalSystemSettings>
+        <option name="externalProjectPath" />
+        <option name="externalSystemIdString" value="GRADLE" />
+        <option name="scriptParameters" />
+        <option name="taskDescriptions">
+          <list />
+        </option>
+        <option name="taskNames">
+          <list />
+        </option>
+        <option name="vmOptions" />
+      </ExternalSystemSettings>
+      <method />
+    </configuration>
     <configuration default="true" type="TestNG" factoryName="TestNG">
     <configuration default="true" type="TestNG" factoryName="TestNG">
       <module name="" />
       <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -407,12 +573,35 @@
       <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
       <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
       <method />
       <method />
     </configuration>
     </configuration>
-    <list size="1">
-      <item index="0" class="java.lang.String" itemvalue="Application.Main" />
+    <configuration default="false" name="writelatex-git-bridge tests" type="JUnit" factoryName="JUnit">
+      <module name="writelatex-git-bridge" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="PACKAGE_NAME" value="" />
+      <option name="MAIN_CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="TEST_OBJECT" value="package" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="moduleWithDependencies" />
+      </option>
+      <envs />
+      <patterns />
+      <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Run" />
+      <method />
+    </configuration>
+    <list size="2">
+      <item index="0" class="java.lang.String" itemvalue="Application.writelatex-git-bridge" />
+      <item index="1" class="java.lang.String" itemvalue="JUnit.writelatex-git-bridge tests" />
     </list>
     </list>
     <recent_temporary>
     <recent_temporary>
       <list size="1">
       <list size="1">
-        <item index="0" class="java.lang.String" itemvalue="Application.Main" />
+        <item index="0" class="java.lang.String" itemvalue="Application.writelatex-git-bridge" />
       </list>
       </list>
     </recent_temporary>
     </recent_temporary>
     <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
     <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
@@ -434,30 +623,30 @@
   </component>
   </component>
   <component name="ToolWindowManager">
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="2559" height="1413" extended-state="6" />
     <frame x="0" y="23" width="2559" height="1413" extended-state="6" />
-    <editor active="true" />
+    <editor active="false" />
     <layout>
     <layout>
+      <window_info id="Documentation" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="FLOATING" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" x="100" y="123" width="1166" height="541" />
       <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24970692" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32886904" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.13325518" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
       <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.13325518" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.16443452" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16443452" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Documentation" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="FLOATING" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" x="100" y="123" width="1166" height="541" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32886904" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
     </layout>
     </layout>
@@ -574,50 +763,170 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
+    <entry file="jar://$PROJECT_DIR$/libs/javax.servlet-api-3.1.0.jar!/javax/servlet/http/HttpServlet.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="660" max-vertical-offset="750">
+          <caret line="44" column="0" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/writelatex-git-bridge.iml">
     <entry file="file://$PROJECT_DIR$/writelatex-git-bridge.iml">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="255" max-vertical-offset="345">
-          <caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="420" max-vertical-offset="510">
+          <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="jar://$PROJECT_DIR$/libs/javax.servlet-api-3.1.0.jar!/javax/servlet/http/HttpServlet.class">
+    <entry file="file://$PROJECT_DIR$/writelatex-git-bridge.properties">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="660" max-vertical-offset="750">
-          <caret line="44" column="0" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1095">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/module_writelatex-git-bridge.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-45.576923" vertical-offset="0" max-vertical-offset="1905">
+          <caret line="79" column="153" selection-start-line="79" selection-start-column="148" selection-end-line="79" selection-end-column="153" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/writelatex-git-bridge.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="2175">
+          <caret line="17" column="31" selection-start-line="17" selection-start-column="31" selection-end-line="17" selection-end-column="31" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLGitServletConfig.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="720">
+          <caret line="11" column="15" selection-start-line="11" selection-start-column="15" selection-end-line="11" selection-end-column="15" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLReceivePackFactory.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="405">
+          <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLRepositoryResolver.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1050">
+          <caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLUploadPackFactory.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="375">
+          <caret line="13" column="15" selection-start-line="13" selection-start-column="15" selection-end-line="13" selection-end-column="15" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/Main.java">
     <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/Main.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="195" max-vertical-offset="1890">
-          <caret line="35" column="44" selection-start-line="35" selection-start-column="44" selection-end-line="35" selection-end-column="44" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="300">
+          <caret line="10" column="37" selection-start-line="10" selection-start-column="37" selection-end-line="10" selection-end-column="37" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java">
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/application/WLGitBridgeServer.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="15" max-vertical-offset="810">
+          <caret line="28" column="35" selection-start-line="28" selection-start-column="35" selection-end-line="28" selection-end-column="35" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/application/WLGitBridgeApplication.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="480">
+          <caret line="23" column="5" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/git/WLGitServlet.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="390">
+          <caret line="16" column="48" selection-start-line="16" selection-start-column="48" selection-end-line="16" selection-end-column="48" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeServerTests.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="7" column="37" selection-start-line="7" selection-start-column="37" selection-end-line="12" selection-end-column="5" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/application/WLGitBridgeApplicationTests.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletConfigTests.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="195">
-          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLGitServletTests.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/WGBServerTests.java">
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLReceivePackFactoryTests.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="195">
-          <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="7" column="40" selection-start-line="7" selection-start-column="40" selection-end-line="13" selection-end-column="0" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/WGBServer.java">
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLRepositoryResolverTests.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/git/WLUploadPackTests.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="315">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/uk/ac/ic/test/MainTests.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.07978723" vertical-offset="0" max-vertical-offset="1316">
-          <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.20547946" vertical-offset="0" max-vertical-offset="1095">
+          <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
           <folding />
           <folding />
         </state>
         </state>
       </provider>
       </provider>

+ 45 - 1
services/git-bridge/module_writelatex-git-bridge.xml

@@ -17,20 +17,42 @@
   
   
   <path id="writelatex-git-bridge.module.production.classpath">
   <path id="writelatex-git-bridge.module.production.classpath">
     <path refid="${module.jdk.classpath.writelatex-git-bridge}"/>
     <path refid="${module.jdk.classpath.writelatex-git-bridge}"/>
+    <path refid="library.org.eclipse.jgit-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.org.eclipse.jgit.http.server-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.javax.servlet-api-3.1.0.classpath"/>
+    <path refid="library.jetty-all-9.2.3.v20140905.classpath"/>
   </path>
   </path>
   
   
   <path id="writelatex-git-bridge.runtime.production.module.classpath">
   <path id="writelatex-git-bridge.runtime.production.module.classpath">
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
+    <path refid="library.org.eclipse.jgit-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.org.eclipse.jgit.http.server-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.javax.servlet-api-3.1.0.classpath"/>
+    <path refid="library.jetty-all-9.2.3.v20140905.classpath"/>
   </path>
   </path>
   
   
   <path id="writelatex-git-bridge.module.classpath">
   <path id="writelatex-git-bridge.module.classpath">
     <path refid="${module.jdk.classpath.writelatex-git-bridge}"/>
     <path refid="${module.jdk.classpath.writelatex-git-bridge}"/>
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
+    <path refid="library.org.eclipse.jgit-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.org.eclipse.jgit.http.server-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.javax.servlet-api-3.1.0.classpath"/>
+    <path refid="library.jetty-all-9.2.3.v20140905.classpath"/>
+    <pathelement location="${idea.home}/lib/hamcrest-core-1.3.jar"/>
+    <pathelement location="${idea.home}/lib/hamcrest-library-1.3.jar"/>
+    <pathelement location="${idea.home}/lib/junit-4.11.jar"/>
   </path>
   </path>
   
   
   <path id="writelatex-git-bridge.runtime.module.classpath">
   <path id="writelatex-git-bridge.runtime.module.classpath">
     <pathelement location="${writelatex-git-bridge.testoutput.dir}"/>
     <pathelement location="${writelatex-git-bridge.testoutput.dir}"/>
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
     <pathelement location="${writelatex-git-bridge.output.dir}"/>
+    <path refid="library.org.eclipse.jgit-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.org.eclipse.jgit.http.server-3.5.1.201410131835-r.classpath"/>
+    <path refid="library.javax.servlet-api-3.1.0.classpath"/>
+    <path refid="library.jetty-all-9.2.3.v20140905.classpath"/>
+    <pathelement location="${idea.home}/lib/hamcrest-core-1.3.jar"/>
+    <pathelement location="${idea.home}/lib/hamcrest-library-1.3.jar"/>
+    <pathelement location="${idea.home}/lib/junit-4.11.jar"/>
   </path>
   </path>
   
   
   
   
@@ -48,6 +70,12 @@
     </dirset>
     </dirset>
   </path>
   </path>
   
   
+  <path id="writelatex-git-bridge.module.test.sourcepath">
+    <dirset dir="${module.writelatex-git-bridge.basedir}">
+      <include name="test"/>
+    </dirset>
+  </path>
+  
   
   
   <target name="compile.module.writelatex-git-bridge" depends="compile.module.writelatex-git-bridge.production,compile.module.writelatex-git-bridge.tests" description="Compile module writelatex-git-bridge"/>
   <target name="compile.module.writelatex-git-bridge" depends="compile.module.writelatex-git-bridge.production,compile.module.writelatex-git-bridge.tests" description="Compile module writelatex-git-bridge"/>
   
   
@@ -69,7 +97,23 @@
     </copy>
     </copy>
   </target>
   </target>
   
   
-  <target name="compile.module.writelatex-git-bridge.tests" depends="register.custom.compilers,compile.module.writelatex-git-bridge.production" description="compile module writelatex-git-bridge; test classes" unless="skip.tests"/>
+  <target name="compile.module.writelatex-git-bridge.tests" depends="register.custom.compilers,compile.module.writelatex-git-bridge.production" description="compile module writelatex-git-bridge; test classes" unless="skip.tests">
+    <mkdir dir="${writelatex-git-bridge.testoutput.dir}"/>
+    <javac2 destdir="${writelatex-git-bridge.testoutput.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.writelatex-git-bridge}/javac">
+      <compilerarg line="${compiler.args.writelatex-git-bridge}"/>
+      <bootclasspath refid="writelatex-git-bridge.module.bootclasspath"/>
+      <classpath refid="writelatex-git-bridge.module.classpath"/>
+      <src refid="writelatex-git-bridge.module.test.sourcepath"/>
+      <patternset refid="excluded.from.compilation.writelatex-git-bridge"/>
+    </javac2>
+    
+    <copy todir="${writelatex-git-bridge.testoutput.dir}">
+      <fileset dir="${module.writelatex-git-bridge.basedir}/test">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
   
   
   <target name="clean.module.writelatex-git-bridge" description="cleanup module">
   <target name="clean.module.writelatex-git-bridge" description="cleanup module">
     <delete dir="${writelatex-git-bridge.output.dir}"/>
     <delete dir="${writelatex-git-bridge.output.dir}"/>

+ 3 - 109
services/git-bridge/src/uk/ac/ic/Main.java

@@ -1,120 +1,14 @@
 package uk.ac.ic;
 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.
  * Created by Winston on 01/11/14.
  */
  */
 public class Main {
 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<HttpServletRequest>() {
-            @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<HttpServletRequest>() {
-            @Override
-            public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException {
-                return new ReceivePack(repository);
-            }
-        });
-
-        servlet.setUploadPackFactory(new UploadPackFactory<HttpServletRequest>() {
-            @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<String> getInitParameterNames() {
-                return null;
-            }
-        });
-        servletContextHandler.addServlet(new ServletHolder(servlet), "/*");
-        server.start();
-        server.join();
-
-
+    public static void main(String[] args) {
+        new WLGitBridgeApplication(args).run();
     }
     }
 
 
 }
 }

+ 0 - 10
services/git-bridge/src/uk/ac/ic/WGBServer.java

@@ -1,10 +0,0 @@
-package uk.ac.ic;
-
-/**
- * Created by Winston on 02/11/14.
- */
-public class WGBServer {
-
-
-
-}

+ 26 - 0
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) {
+
+    }
+
+}

+ 48 - 0
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);
+    }
+
+}

+ 20 - 0
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));
+    }
+
+}

+ 42 - 0
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<String> getInitParameterNames() {
+        return null;
+    }
+
+}

+ 21 - 0
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<HttpServletRequest> {
+
+    @Override
+    public ReceivePack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException {
+        return new ReceivePack(repository);
+    }
+
+}

+ 64 - 0
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<HttpServletRequest> {
+
+    @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;
+    }
+
+}

+ 19 - 0
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<HttpServletRequest> {
+    @Override
+    public UploadPack create(HttpServletRequest httpServletRequest, Repository repository) throws ServiceNotEnabledException, ServiceNotAuthorizedException {
+        return new UploadPack(repository);
+    }
+}

+ 8 - 0
services/git-bridge/test/uk/ac/ic/test/MainTests.java

@@ -1,7 +1,15 @@
 package uk.ac.ic.test;
 package uk.ac.ic.test;
 
 
+import org.junit.Test;
+
 /**
 /**
  * Created by Winston on 02/11/14.
  * Created by Winston on 02/11/14.
  */
  */
 public class MainTests {
 public class MainTests {
+
+    @Test
+    public void nothingToTest() {
+
+    }
+
 }
 }

+ 0 - 7
services/git-bridge/test/uk/ac/ic/test/WGBServerTests.java

@@ -1,7 +0,0 @@
-package uk.ac.ic.test;
-
-/**
- * Created by Winston on 02/11/14.
- */
-public class WGBServerTests {
-}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 15 - 0
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() {
+
+    }
+
+}

+ 11 - 0
services/git-bridge/writelatex-git-bridge.iml

@@ -12,6 +12,17 @@
     <orderEntry type="library" name="org.eclipse.jgit.http.server-3.5.1.201410131835-r" level="project" />
     <orderEntry type="library" name="org.eclipse.jgit.http.server-3.5.1.201410131835-r" level="project" />
     <orderEntry type="library" name="javax.servlet-api-3.1.0" level="project" />
     <orderEntry type="library" name="javax.servlet-api-3.1.0" level="project" />
     <orderEntry type="library" name="jetty-all-9.2.3.v20140905" level="project" />
     <orderEntry type="library" name="jetty-all-9.2.3.v20140905" level="project" />
+    <orderEntry type="module-library" scope="TEST">
+      <library name="JUnit4">
+        <CLASSES>
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
   </component>
   </component>
 </module>
 </module>
 
 

+ 19 - 0
services/git-bridge/writelatex-git-bridge.xml

@@ -92,6 +92,25 @@
   <property name="project.jdk.home" value="${jdk.home.1.7}"/>
   <property name="project.jdk.home" value="${jdk.home.1.7}"/>
   <property name="project.jdk.bin" value="${jdk.bin.1.7}"/>
   <property name="project.jdk.bin" value="${jdk.bin.1.7}"/>
   <property name="project.jdk.classpath" value="jdk.classpath.1.7"/>
   <property name="project.jdk.classpath" value="jdk.classpath.1.7"/>
+  
+  
+  <!-- Project Libraries -->
+  
+  <path id="library.javax.servlet-api-3.1.0.classpath">
+    <pathelement location="${basedir}/libs/javax.servlet-api-3.1.0.jar"/>
+  </path>
+  
+  <path id="library.jetty-all-9.2.3.v20140905.classpath">
+    <pathelement location="${basedir}/libs/jetty-all-9.2.3.v20140905.jar"/>
+  </path>
+  
+  <path id="library.org.eclipse.jgit-3.5.1.201410131835-r.classpath">
+    <pathelement location="${basedir}/libs/org.eclipse.jgit-3.5.1.201410131835-r.jar"/>
+  </path>
+  
+  <path id="library.org.eclipse.jgit.http.server-3.5.1.201410131835-r.classpath">
+    <pathelement location="${basedir}/libs/org.eclipse.jgit.http.server-3.5.1.201410131835-r.jar"/>
+  </path>
   <!-- Register Custom Compiler Taskdefs -->
   <!-- Register Custom Compiler Taskdefs -->
   <property name="javac2.home" value="${idea.home}/lib"/>
   <property name="javac2.home" value="${idea.home}/lib"/>
   <path id="javac2.classpath">
   <path id="javac2.classpath">