Quellcode durchsuchen

Class and package refactoring with unit tests.

Winston Li vor 12 Jahren
Ursprung
Commit
2d8580f02b
22 geänderte Dateien mit 803 neuen und 190 gelöschten Zeilen
  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">
   <component name="ChangeListManager">
     <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$/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>
     <ignored path="writelatex-git-bridge.iws" />
     <ignored path=".idea/workspace.xml" />
@@ -25,81 +34,101 @@
   </component>
   <component name="FileEditorManager">
     <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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
         </entry>
       </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">
           <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 />
             </state>
           </provider>
         </entry>
       </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">
-            <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 />
             </state>
           </provider>
@@ -119,8 +148,38 @@
     <option name="changedFiles">
       <list>
         <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$/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>
     </option>
   </component>
@@ -136,7 +195,7 @@
     <OptionsSetting value="true" id="Update" />
     <OptionsSetting value="true" id="Status" />
     <OptionsSetting value="true" id="Edit" />
-    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="1" id="Add" />
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
   <component name="ProjectReloadState">
@@ -193,6 +252,90 @@
               <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="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_ELEMENT>
               <option name="myItemId" value="writelatex-git-bridge" />
@@ -210,6 +353,10 @@
               <option name="myItemId" value="ic" />
               <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>
@@ -252,23 +399,27 @@
     <property name="OverrideImplement.combined" value="true" />
     <property name="OverrideImplement.overriding.sorted" value="false" />
     <property name="FullScreen" value="false" />
+    <property name="restartRequiresConfirmation" value="true" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/libs" />
     </key>
+    <key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
+      <recent name="uk.ac.ic" />
+    </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/libs" />
     </key>
   </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="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" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
       <option name="ENABLE_SWING_INSPECTOR" value="false" />
       <option name="ENV_VARIABLES" />
       <option name="PASS_PARENT_ENVS" value="true" />
@@ -313,6 +464,21 @@
       <option name="PORT" value="5005" />
       <method />
     </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">
       <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -407,12 +573,35 @@
       <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
       <method />
     </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>
     <recent_temporary>
       <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>
     </recent_temporary>
     <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
@@ -434,30 +623,30 @@
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="2559" height="1413" extended-state="6" />
-    <editor active="true" />
+    <editor active="false" />
     <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="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="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="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="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="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="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="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="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="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="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="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>
@@ -574,50 +763,170 @@
         </state>
       </provider>
     </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">
       <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 />
         </state>
       </provider>
     </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">
-        <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 />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/uk/ac/ic/Main.java">
       <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 />
         </state>
       </provider>
     </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">
-        <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 />
         </state>
       </provider>
     </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">
-        <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 />
         </state>
       </provider>
     </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">
-        <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 />
         </state>
       </provider>

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

@@ -17,20 +17,42 @@
   
   <path id="writelatex-git-bridge.module.production.classpath">
     <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 id="writelatex-git-bridge.runtime.production.module.classpath">
     <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 id="writelatex-git-bridge.module.classpath">
     <path refid="${module.jdk.classpath.writelatex-git-bridge}"/>
     <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 id="writelatex-git-bridge.runtime.module.classpath">
     <pathelement location="${writelatex-git-bridge.testoutput.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>
   
   
@@ -48,6 +70,12 @@
     </dirset>
   </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"/>
   
@@ -69,7 +97,23 @@
     </copy>
   </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">
     <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;
 
-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<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;
 
+import org.junit.Test;
+
 /**
  * Created by Winston on 02/11/14.
  */
 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="javax.servlet-api-3.1.0" 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>
 </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.bin" value="${jdk.bin.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 -->
   <property name="javac2.home" value="${idea.home}/lib"/>
   <path id="javac2.classpath">