From af171bc832c9a17f6b6f058326efb5ac4357feb9 Mon Sep 17 00:00:00 2001
From: "Fuentes Serna  Juan Mariano (ID SIS)" <juanf@bs-mbpr28.d.ethz.ch>
Date: Mon, 28 May 2018 12:05:51 +0200
Subject: [PATCH] SSDM-6374 : Microservice server merged from SVN

---
 microservice-server/build.gradle              |   3 +-
 microservice-server/conf/config.json          |   4 +-
 microservice-server/config.json               |  27 ++++++
 .../gradle/wrapper/gradle-wrapper.properties  |   2 +-
 .../java/ch/ethz/sis/microservices/.DS_Store  | Bin 6148 -> 0 bytes
 .../api/configuration/Config.java             |   2 +-
 .../api/configuration/ServiceConfig.java      |   2 +-
 .../server/json/JSONObjectMapper.java         |   2 +-
 .../json/jackson/JacksonObjectMapper.java     |   4 +-
 .../server/logging/LogFactory.java            |   2 +-
 .../server/logging/LogFactoryFactory.java     |   2 +-
 .../server/logging/LogManager.java            |   2 +-
 .../{ => download}/server/logging/Logger.java |   2 +-
 .../logging/log4j/Log4J2LogFactory.java       |   6 +-
 .../server/logging/log4j/Log4JLogger.java     |   4 +-
 .../server/services/Service.java              |   4 +-
 .../store/AbstractFileServiceHandler.java     |  87 ++++--------------
 .../store/AbstractFileServiceTest.java        |  22 +++--
 .../services/store/DownloadHandler.java       |  61 ++++++++++++
 .../services/store/DownloadHandlerTest.java   |   5 +-
 .../store/DownloadHandlerWithOffsetTest.java  |  15 +++
 .../services/store/FileInfoHandler.java       |  13 +--
 .../services/store/FileInfoHandlerTest.java   |   7 +-
 .../server/startup}/HttpClient.java           |   2 +-
 .../download/server/startup/Main.java         |  40 ++++++++
 .../server/startup/ServerLauncher.java        |  12 +--
 .../ethz/sis/microservices/server/.DS_Store   | Bin 6148 -> 0 bytes
 .../services/store/DownloadHandler.java       |  32 -------
 .../microservices/server/startup/Main.java    |  47 ----------
 .../ethz/sis/microservices/server/.DS_Store   | Bin 6148 -> 0 bytes
 .../microservices/server/services/.DS_Store   | Bin 6148 -> 0 bytes
 .../server/services/store/.DS_Store           | Bin 6148 -> 0 bytes
 32 files changed, 214 insertions(+), 197 deletions(-)
 create mode 100644 microservice-server/config.json
 delete mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/.DS_Store
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/api/configuration/Config.java (72%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/api/configuration/ServiceConfig.java (79%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/json/JSONObjectMapper.java (78%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/json/jackson/JacksonObjectMapper.java (89%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/LogFactory.java (55%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/LogFactoryFactory.java (76%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/LogManager.java (89%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/Logger.java (82%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/log4j/Log4J2LogFactory.java (54%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/logging/log4j/Log4JLogger.java (92%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/services/Service.java (71%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/services/store/AbstractFileServiceHandler.java (71%)
 rename microservice-server/src/{test/java/ch/ethz/sis/microservices => main/java/ch/ethz/sis/microservices/download}/server/services/store/AbstractFileServiceTest.java (66%)
 create mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java
 rename microservice-server/src/{test/java/ch/ethz/sis/microservices => main/java/ch/ethz/sis/microservices/download}/server/services/store/DownloadHandlerTest.java (72%)
 create mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerWithOffsetTest.java
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/services/store/FileInfoHandler.java (66%)
 rename microservice-server/src/{test/java/ch/ethz/sis/microservices => main/java/ch/ethz/sis/microservices/download}/server/services/store/FileInfoHandlerTest.java (68%)
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{util => download/server/startup}/HttpClient.java (97%)
 create mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/Main.java
 rename microservice-server/src/main/java/ch/ethz/sis/microservices/{ => download}/server/startup/ServerLauncher.java (75%)
 delete mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/server/.DS_Store
 delete mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/DownloadHandler.java
 delete mode 100644 microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/Main.java
 delete mode 100644 microservice-server/src/test/java/ch/ethz/sis/microservices/server/.DS_Store
 delete mode 100644 microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/.DS_Store
 delete mode 100644 microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/.DS_Store

diff --git a/microservice-server/build.gradle b/microservice-server/build.gradle
index 31097d3b245..102904d0663 100644
--- a/microservice-server/build.gradle
+++ b/microservice-server/build.gradle
@@ -6,6 +6,7 @@ task wrapper(type: Wrapper) {
 }
 
 repositories {
+    mavenCentral()
     ivy {
         ivyPattern "http://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/[organisation]/[module]/[revision]/ivy.xml"
         artifactPattern "http://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
@@ -24,7 +25,7 @@ dependencies {
 }
 
 
-mainClassName = "ch.ethz.sis.microservices.server.startup.Main"
+mainClassName = "ch.ethz.sis.microservices.download.server.startup.Main"
 
 distZip {
     into(project.name) {
diff --git a/microservice-server/conf/config.json b/microservice-server/conf/config.json
index 07d1a974a84..44f4444e74b 100644
--- a/microservice-server/conf/config.json
+++ b/microservice-server/conf/config.json
@@ -2,7 +2,7 @@
 	"port" : 8080,
 	"services" : [
 		{	
-			"className" : "ch.ethz.sis.microservices.server.services.store.FileInfoHandler", 
+			"className" : "ch.ethz.sis.microservices.download.server.services.store.FileInfoHandler", 
 			"url" : "/file-information",
 			"parameters" : {
 				"openbis-url" : "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
@@ -13,7 +13,7 @@
 			}
 		}, 
 		{ 
-			"className" : "ch.ethz.sis.microservices.server.services.store.DownloadHandler", 
+			"className" : "ch.ethz.sis.microservices.download.server.services.store.DownloadHandler", 
 			"url" : "/download",
 			"parameters" : { 
 				"openbis-url" : "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
diff --git a/microservice-server/config.json b/microservice-server/config.json
new file mode 100644
index 00000000000..44f4444e74b
--- /dev/null
+++ b/microservice-server/config.json
@@ -0,0 +1,27 @@
+{
+	"port" : 8080,
+	"services" : [
+		{	
+			"className" : "ch.ethz.sis.microservices.download.server.services.store.FileInfoHandler", 
+			"url" : "/file-information",
+			"parameters" : {
+				"openbis-url" : "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
+				"datastore-url" : "http://localhost:8889/datastore_server/rmi-data-store-server-v3",
+				"services-timeout" : "10000",
+				"allowedExternalDMSCode" : "ADMIN-BS-MBPR28.D.ETHZ.CH-E96954A7",
+				"allowedContentCopyPath" : "/Users/localadmin/obis_data/"
+			}
+		}, 
+		{ 
+			"className" : "ch.ethz.sis.microservices.download.server.services.store.DownloadHandler", 
+			"url" : "/download",
+			"parameters" : { 
+				"openbis-url" : "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
+				"datastore-url" : "http://localhost:8889/datastore_server/rmi-data-store-server-v3",
+				"services-timeout" : "10000",
+				"allowedExternalDMSCode" : "ADMIN-BS-MBPR28.D.ETHZ.CH-E96954A7",
+				"allowedContentCopyPath" : "/Users/localadmin/obis_data/"
+			}
+		} 
+	]
+}
\ No newline at end of file
diff --git a/microservice-server/gradle/wrapper/gradle-wrapper.properties b/microservice-server/gradle/wrapper/gradle-wrapper.properties
index 2df108562a2..3bde4b663e7 100644
--- a/microservice-server/gradle/wrapper/gradle-wrapper.properties
+++ b/microservice-server/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/gradle/distribution/4.5/gradle-4.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-bin.zip
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/.DS_Store b/microservice-server/src/main/java/ch/ethz/sis/microservices/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3
zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!(
z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ
zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv
j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I

diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/Config.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/Config.java
similarity index 72%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/Config.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/Config.java
index a5dc538fdb3..0dbc2068f6c 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/Config.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/Config.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.api.configuration;
+package ch.ethz.sis.microservices.download.api.configuration;
 
 import lombok.Data;
 import lombok.NoArgsConstructor;
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/ServiceConfig.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/ServiceConfig.java
similarity index 79%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/ServiceConfig.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/ServiceConfig.java
index bd173c2835c..cf7545ef5b7 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/api/configuration/ServiceConfig.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/api/configuration/ServiceConfig.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.api.configuration;
+package ch.ethz.sis.microservices.download.api.configuration;
 
 import java.util.HashMap;
 
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/JSONObjectMapper.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/JSONObjectMapper.java
similarity index 78%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/JSONObjectMapper.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/JSONObjectMapper.java
index 83eaf3e9cfc..20682273fb3 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/JSONObjectMapper.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/JSONObjectMapper.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.json;
+package ch.ethz.sis.microservices.download.server.json;
 
 import java.io.FileInputStream;
 
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/jackson/JacksonObjectMapper.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/jackson/JacksonObjectMapper.java
similarity index 89%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/jackson/JacksonObjectMapper.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/jackson/JacksonObjectMapper.java
index 3b94a6fbf26..8821bac0747 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/json/jackson/JacksonObjectMapper.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/json/jackson/JacksonObjectMapper.java
@@ -1,11 +1,11 @@
-package ch.ethz.sis.microservices.server.json.jackson;
+package ch.ethz.sis.microservices.download.server.json.jackson;
 
 import java.io.FileInputStream;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 
-import ch.ethz.sis.microservices.server.json.JSONObjectMapper;
+import ch.ethz.sis.microservices.download.server.json.JSONObjectMapper;
 
 public class JacksonObjectMapper implements JSONObjectMapper
 {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactory.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactory.java
similarity index 55%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactory.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactory.java
index b0695fc6656..c2ae5ee24a7 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactory.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactory.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.logging;
+package ch.ethz.sis.microservices.download.server.logging;
 
 public interface LogFactory {
     <T> Logger getLogger(Class<T> clazz);
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactoryFactory.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactoryFactory.java
similarity index 76%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactoryFactory.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactoryFactory.java
index 43eae4473b9..23d94da8251 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogFactoryFactory.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogFactoryFactory.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.logging;
+package ch.ethz.sis.microservices.download.server.logging;
 
 public class LogFactoryFactory {
     public LogFactory create(String logFactoryClass) throws Exception {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogManager.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogManager.java
similarity index 89%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogManager.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogManager.java
index 1f96db4a711..c1ef4400567 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/LogManager.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/LogManager.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.logging;
+package ch.ethz.sis.microservices.download.server.logging;
 
 public class LogManager {
     private static LogFactory factory;
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/Logger.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/Logger.java
similarity index 82%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/Logger.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/Logger.java
index 93c296a11e8..3e9c2742a41 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/Logger.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/Logger.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.logging;
+package ch.ethz.sis.microservices.download.server.logging;
 
 
 public interface Logger {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4J2LogFactory.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4J2LogFactory.java
similarity index 54%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4J2LogFactory.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4J2LogFactory.java
index 5d43e3a32a2..27cd6b6881f 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4J2LogFactory.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4J2LogFactory.java
@@ -1,9 +1,9 @@
-package ch.ethz.sis.microservices.server.logging.log4j;
+package ch.ethz.sis.microservices.download.server.logging.log4j;
 
 import org.apache.logging.log4j.LogManager;
 
-import ch.ethz.sis.microservices.server.logging.LogFactory;
-import ch.ethz.sis.microservices.server.logging.Logger;
+import ch.ethz.sis.microservices.download.server.logging.LogFactory;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
 
 public class Log4J2LogFactory implements LogFactory
 {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4JLogger.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4JLogger.java
similarity index 92%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4JLogger.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4JLogger.java
index 39a9eace264..a605ec7a512 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/logging/log4j/Log4JLogger.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/logging/log4j/Log4JLogger.java
@@ -1,11 +1,11 @@
-package ch.ethz.sis.microservices.server.logging.log4j;
+package ch.ethz.sis.microservices.download.server.logging.log4j;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.spi.AbstractLogger;
 import org.apache.logging.log4j.spi.ExtendedLoggerWrapper;
 
-class Log4JLogger extends ExtendedLoggerWrapper implements ch.ethz.sis.microservices.server.logging.Logger
+class Log4JLogger extends ExtendedLoggerWrapper implements ch.ethz.sis.microservices.download.server.logging.Logger
 {
 
     private final String FQCN;
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/Service.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/Service.java
similarity index 71%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/Service.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/Service.java
index c38c32983ef..0e9f65b8ab9 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/Service.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/Service.java
@@ -1,8 +1,8 @@
-package ch.ethz.sis.microservices.server.services;
+package ch.ethz.sis.microservices.download.server.services;
 
 import javax.servlet.http.HttpServlet;
 
-import ch.ethz.sis.microservices.api.configuration.ServiceConfig;
+import ch.ethz.sis.microservices.download.api.configuration.ServiceConfig;
 
 public abstract class Service extends HttpServlet
 {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceHandler.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceHandler.java
similarity index 71%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceHandler.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceHandler.java
index 7c28850e592..9f10304c1de 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceHandler.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceHandler.java
@@ -1,24 +1,21 @@
-package ch.ethz.sis.microservices.server.services.store;
+package ch.ethz.sis.microservices.download.server.services.store;
 
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
-import java.util.Deque;
-import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedDeque;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.Logger;
-import ch.ethz.sis.microservices.server.services.Service;
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
+import ch.ethz.sis.microservices.download.server.services.Service;
 import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.ContentCopy;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions;
@@ -29,7 +26,6 @@ import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile;
 import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.fetchoptions.DataSetFileFetchOptions;
 import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.search.DataSetFileSearchCriteria;
 import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
-import lombok.Value;
 
 public abstract class AbstractFileServiceHandler extends Service
 {
@@ -70,10 +66,10 @@ public abstract class AbstractFileServiceHandler extends Service
         Path pathToFile = getPathToFile(contentCopyPath, datasetPathToFile);
         if (isFileAccessible)
         {
-            success(pathToFile, response);
+            success(pathToFile, request, response);
         } else
         {
-            failure(pathToFile, response);
+            failure(pathToFile, request, response);
         }
     }
 
@@ -85,9 +81,9 @@ public abstract class AbstractFileServiceHandler extends Service
         doAction(request, response);
     }
 
-    protected abstract void success(Path pathToFile, HttpServletResponse response) throws ServletException, IOException;
+    protected abstract void success(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
 
-    protected abstract void failure(Path pathToFile, HttpServletResponse response) throws ServletException, IOException;
+    protected abstract void failure(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
 
     private DataSet getDataset(String openbisURL, int openbisTimeout, String sessionToken, String datasetPermId, String externalDMSCode,
             String contentCopyPath)
@@ -110,68 +106,17 @@ public abstract class AbstractFileServiceHandler extends Service
         }
         return null;
     }
-    
-    /*
-     * Less recently used cache
-     * Keeps maxSize items
-     */
-    @Value
-    private static class LRUCache<KEY, VALUE> {
-
-        int maxSize;
-        Map<KEY, VALUE> cacheByKey = new ConcurrentHashMap<>();
-        Deque<KEY> cachePriority = new ConcurrentLinkedDeque<>();
-
-        public LRUCache(int maxSize) {
-            this.maxSize = maxSize;
-        }
-
-        public void add(KEY key, VALUE value) {
-            // Remove if existing
-            if(cacheByKey.containsKey(key)) {
-                cacheByKey.remove(key);
-                cachePriority.remove(key);
-            }
-
-            // Add again
-            cacheByKey.put(key, value);
-            cachePriority.addFirst(key);
-
-            // Remove oldest if the list grow too much
-            if(cachePriority.size() > maxSize) {
-                cacheByKey.remove(cachePriority.removeLast());
-            }
-        }
-
-        public VALUE get(KEY key) {
-            // Refresh Prio
-            if(cacheByKey.containsKey(key)) {
-                cachePriority.remove(key);
-                cachePriority.addFirst(key);
-            }
-
-            return cacheByKey.get(key);
-        }
-
-    }
-
-    private static LRUCache<String, List<DataSetFile>> cache = new LRUCache<>(1000);
 
     private DataSetFile getDatasetFile(String datastoreURL, int datastoreTimeout, String sessionToken, String datasetPermId,
             String datasetPathToFile)
     {
-        List<DataSetFile> files = cache.get(datasetPermId);
-        
-        if(files == null) {
-            IDataStoreServerApi v3Dss = HttpInvokerUtils.createServiceStub(IDataStoreServerApi.class, datastoreURL, datastoreTimeout);
-            DataSetFileSearchCriteria searchCriteria = new DataSetFileSearchCriteria();
-            searchCriteria.withDataSet().withCode().thatEquals(datasetPermId);
-            DataSetFileFetchOptions fetchOptions = new DataSetFileFetchOptions();
-            files = v3Dss.searchFiles(sessionToken, searchCriteria, fetchOptions).getObjects();
-            cache.add(datasetPermId, files);
-        }
-        
-        for (DataSetFile file : files)
+        IDataStoreServerApi v3Dss = HttpInvokerUtils.createServiceStub(IDataStoreServerApi.class, datastoreURL, datastoreTimeout);
+
+        DataSetFileSearchCriteria searchCriteria = new DataSetFileSearchCriteria();
+        searchCriteria.withDataSet().withCode().thatEquals(datasetPermId);
+        DataSetFileFetchOptions fetchOptions = new DataSetFileFetchOptions();
+        SearchResult<DataSetFile> files = v3Dss.searchFiles(sessionToken, searchCriteria, fetchOptions);
+        for (DataSetFile file : files.getObjects())
         {
             if (file.getPath().equals(datasetPathToFile))
             {
diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceTest.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceTest.java
similarity index 66%
rename from microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceTest.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceTest.java
index 4dcf5b8da81..c7b0801bda7 100644
--- a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/AbstractFileServiceTest.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/AbstractFileServiceTest.java
@@ -1,11 +1,11 @@
-package ch.ethz.sis.microservices.server.services.store;
+package ch.ethz.sis.microservices.download.server.services.store;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.log4j.Log4J2LogFactory;
-import ch.ethz.sis.microservices.util.HttpClient;
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.log4j.Log4J2LogFactory;
+import ch.ethz.sis.microservices.download.server.startup.HttpClient;
 import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
 import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
 
@@ -17,13 +17,13 @@ public class AbstractFileServiceTest
         LogManager.setLogFactory(new Log4J2LogFactory());
     }
 
-    public static void test(String openbisURL, String serviceURL, String user, String pass) throws Exception
+    public static void test(String openbisURL, String serviceURL, String user, String pass, Long offset) throws Exception
     {
         // Service
         String externalDMSCode = "ADMIN-BS-MBPR28.D.ETHZ.CH-E96954A7";
-        String contentCopyPath = "/Users/localadmin/obis_data/data";
-        String datasetPermId = "20180131090547942-3";
-        String datasetPathToFile = "file";
+        String contentCopyPath = "/Users/localadmin/obis_data/data1";
+        String datasetPermId = "20180523115921026-50";
+        String datasetPathToFile = "openBIS-installation-standard-technologies-SNAPSHOT-r1526484921.tar.gz";
 
         // Obtain session token from openBIS
         int timeout = 10000;
@@ -36,11 +36,15 @@ public class AbstractFileServiceTest
         parameters.put("externalDMSCode", externalDMSCode);
         parameters.put("contentCopyPath", contentCopyPath);
         parameters.put("datasetPathToFile", datasetPathToFile);
+        if(offset != null) {
+        		parameters.put("offset", offset.toString());
+        }
+        
 
         long start = System.currentTimeMillis();
         byte[] response = HttpClient.doGet(serviceURL, parameters);
         long end = System.currentTimeMillis();
-        System.out.println(new String(response));
+        System.out.println("Response Size: " + response.length);
         System.out.println("Time: " + (end - start));
     }
 }
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java
new file mode 100644
index 00000000000..756ac3e5ac2
--- /dev/null
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java
@@ -0,0 +1,61 @@
+package ch.ethz.sis.microservices.download.server.services.store;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
+
+public class DownloadHandler extends AbstractFileServiceHandler
+{
+    private static Logger logger = LogManager.getLogger(DownloadHandler.class);
+
+    @Override
+    protected void success(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+    {
+    		// Request parameters
+    		String offsetP = request.getParameter("offset");
+    		long offset = 0;
+    		if(offsetP != null) {
+    			offset = Long.parseLong(offsetP);
+    		}
+        
+    		long size = Files.size(pathToFile) - offset;
+    		if(size < 0) {
+    			throw new IllegalArgumentException("offset to read starts beyond end of file");
+    		}
+    		
+    		// Response
+        response.setContentType("application/octet-stream");
+        response.setHeader("Content-Disposition", "attachment; filename=" + pathToFile.getFileName().toString());
+        response.setHeader("Content-Length", Long.toString(Files.size(pathToFile)));
+        
+		InputStream is = Files.newInputStream(pathToFile);
+		is.skip(offset);
+		copy(is, response.getOutputStream(), size);
+        
+        response.setStatus(HttpServletResponse.SC_OK);
+    }
+    
+    private static final int BUFFER_SIZE = 1024;
+    private static void copy(InputStream source, OutputStream destination, long sourceSize) throws IOException {
+    		byte[] buf = new byte[BUFFER_SIZE];
+    		int readed;
+    		while ((readed = source.read(buf)) > 0) {
+    			destination.write(buf, 0, readed);
+    		}
+    }
+
+    @Override
+    protected void failure(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+    {
+        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+    }
+}
\ No newline at end of file
diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/DownloadHandlerTest.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerTest.java
similarity index 72%
rename from microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/DownloadHandlerTest.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerTest.java
index 0fd062dafd9..6cb1d6c796d 100644
--- a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/DownloadHandlerTest.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerTest.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.services.store;
+package ch.ethz.sis.microservices.download.server.services.store;
 
 public class DownloadHandlerTest
 {
@@ -9,6 +9,7 @@ public class DownloadHandlerTest
                 "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
                 "http://localhost:8080/download",
                 "admin",
-                "admin");
+                "admin",
+                null);
     }
 }
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerWithOffsetTest.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerWithOffsetTest.java
new file mode 100644
index 00000000000..12db6ca136e
--- /dev/null
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandlerWithOffsetTest.java
@@ -0,0 +1,15 @@
+package ch.ethz.sis.microservices.download.server.services.store;
+
+public class DownloadHandlerWithOffsetTest
+{
+
+    public static void main(String[] args) throws Exception
+    {
+        AbstractFileServiceTest.test(
+                "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
+                "http://localhost:8080/download",
+                "admin",
+                "admin",
+                430129557L);
+    }
+}
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandler.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandler.java
similarity index 66%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandler.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandler.java
index 016494ca535..51b4af38fad 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandler.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandler.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.services.store;
+package ch.ethz.sis.microservices.download.server.services.store;
 
 import java.io.IOException;
 import java.nio.file.Path;
@@ -6,11 +6,12 @@ import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import ch.ethz.sis.microservices.server.json.jackson.JacksonObjectMapper;
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.Logger;
+import ch.ethz.sis.microservices.download.server.json.jackson.JacksonObjectMapper;
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
 
 public class FileInfoHandler extends AbstractFileServiceHandler
 {
@@ -35,13 +36,13 @@ public class FileInfoHandler extends AbstractFileServiceHandler
     }
 
     @Override
-    protected void success(Path pathToFile, HttpServletResponse response) throws ServletException, IOException
+    protected void success(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
     {
         writeOutput(response, HttpServletResponse.SC_OK, true);
     }
 
     @Override
-    protected void failure(Path pathToFile, HttpServletResponse response) throws ServletException, IOException
+    protected void failure(Path pathToFile, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
     {
         writeOutput(response, HttpServletResponse.SC_OK, false);
     }
diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandlerTest.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandlerTest.java
similarity index 68%
rename from microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandlerTest.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandlerTest.java
index 0c74198e293..7b3c8c839f2 100644
--- a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/FileInfoHandlerTest.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/FileInfoHandlerTest.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.server.services.store;
+package ch.ethz.sis.microservices.download.server.services.store;
 
 public class FileInfoHandlerTest
 {
@@ -7,7 +7,8 @@ public class FileInfoHandlerTest
         AbstractFileServiceTest.test(
                 "http://localhost:8888/openbis/openbis/rmi-application-server-v3",
                 "http://localhost:8080/file-information",
-                "juanf",
-                "123");
+                "admin",
+                "admin",
+        			null);
     }
 }
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/util/HttpClient.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/HttpClient.java
similarity index 97%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/util/HttpClient.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/HttpClient.java
index 5e1ef57a354..f4a35f881bf 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/util/HttpClient.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/HttpClient.java
@@ -1,4 +1,4 @@
-package ch.ethz.sis.microservices.util;
+package ch.ethz.sis.microservices.download.server.startup;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/Main.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/Main.java
new file mode 100644
index 00000000000..544ba43ad40
--- /dev/null
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/Main.java
@@ -0,0 +1,40 @@
+package ch.ethz.sis.microservices.download.server.startup;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import ch.ethz.sis.microservices.download.api.configuration.Config;
+import ch.ethz.sis.microservices.download.server.json.jackson.JacksonObjectMapper;
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
+import ch.ethz.sis.microservices.download.server.logging.log4j.Log4J2LogFactory;
+
+public class Main
+{
+    static
+    {
+        // Configuring Logging
+        LogManager.setLogFactory(new Log4J2LogFactory());
+    }
+
+    private static Logger logger = LogManager.getLogger(Main.class);
+
+    public static void main(String[] args) throws Exception
+    {
+        logger.info("Current Workspace: " + (new File("").getAbsolutePath()));
+
+        File configFile;
+        if (args.length < 1)
+        {
+            configFile = new File("config.json");
+            logger.info("No arguments given, starting with default config file: " + (configFile.getAbsolutePath()));
+        } else
+        {
+            configFile = new File(args[0]);
+        }
+
+        Config config = JacksonObjectMapper.getInstance().readValue(new FileInputStream(configFile), Config.class);
+        ServerLauncher servicesStarter = new ServerLauncher(config);
+        servicesStarter.getServer().join();
+    }
+}
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/ServerLauncher.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/ServerLauncher.java
similarity index 75%
rename from microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/ServerLauncher.java
rename to microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/ServerLauncher.java
index e1196a9e23a..6f44aa5a330 100644
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/ServerLauncher.java
+++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/startup/ServerLauncher.java
@@ -1,14 +1,14 @@
-package ch.ethz.sis.microservices.server.startup;
+package ch.ethz.sis.microservices.download.server.startup;
 
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.servlet.ServletHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 
-import ch.ethz.sis.microservices.api.configuration.Config;
-import ch.ethz.sis.microservices.api.configuration.ServiceConfig;
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.Logger;
-import ch.ethz.sis.microservices.server.services.Service;
+import ch.ethz.sis.microservices.download.api.configuration.Config;
+import ch.ethz.sis.microservices.download.api.configuration.ServiceConfig;
+import ch.ethz.sis.microservices.download.server.logging.LogManager;
+import ch.ethz.sis.microservices.download.server.logging.Logger;
+import ch.ethz.sis.microservices.download.server.services.Service;
 
 public class ServerLauncher
 {
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/.DS_Store b/microservice-server/src/main/java/ch/ethz/sis/microservices/server/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3
zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!(
z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ
zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv
j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I

diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/DownloadHandler.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/DownloadHandler.java
deleted file mode 100644
index 3395c0d1e83..00000000000
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/services/store/DownloadHandler.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package ch.ethz.sis.microservices.server.services.store;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
-
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.Logger;
-
-public class DownloadHandler extends AbstractFileServiceHandler
-{
-    private static Logger logger = LogManager.getLogger(DownloadHandler.class);
-
-    @Override
-    protected void success(Path pathToFile, HttpServletResponse response) throws ServletException, IOException
-    {
-        response.setContentType("application/octet-stream");
-        response.setHeader("Content-Disposition", "attachment; filename=" + pathToFile.getFileName().toString());
-        response.setHeader("Content-Length", Long.toString(Files.size(pathToFile)));
-        Files.copy(pathToFile, response.getOutputStream());
-        response.setStatus(HttpServletResponse.SC_OK);
-    }
-
-    @Override
-    protected void failure(Path pathToFile, HttpServletResponse response) throws ServletException, IOException
-    {
-        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
-    }
-}
\ No newline at end of file
diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/Main.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/Main.java
deleted file mode 100644
index 9194cdb64d5..00000000000
--- a/microservice-server/src/main/java/ch/ethz/sis/microservices/server/startup/Main.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package ch.ethz.sis.microservices.server.startup;
-
-import java.io.File;
-import java.io.FileInputStream;
-
-import ch.ethz.sis.microservices.api.configuration.Config;
-import ch.ethz.sis.microservices.server.json.jackson.JacksonObjectMapper;
-import ch.ethz.sis.microservices.server.logging.LogManager;
-import ch.ethz.sis.microservices.server.logging.Logger;
-import ch.ethz.sis.microservices.server.logging.log4j.Log4J2LogFactory;
-
-public class Main
-{
-    static
-    {
-        // Configuring Logging
-        LogManager.setLogFactory(new Log4J2LogFactory());
-    }
-
-    private static Logger logger = LogManager.getLogger(Main.class);
-
-    public static void main(String[] args) throws Exception
-    {
-        logger.info("Current Workspace: " + (new File("").getAbsolutePath()));
-
-        File configFile;
-        if (args.length < 1)
-        {
-            configFile = new File("./conf/config.json");
-            if(configFile.exists()) {
-            		logger.info("No arguments given, starting with default config file: " + (configFile.getAbsolutePath()));
-            } else {
-            		configFile = new File("./config.json");
-            		if(configFile.exists()) {
-                		logger.info("No arguments given, starting with default config file: " + (configFile.getAbsolutePath()));
-                }
-            }
-        } else
-        {
-            configFile = new File(args[0]);
-        }
-
-        Config config = JacksonObjectMapper.getInstance().readValue(new FileInputStream(configFile), Config.class);
-        ServerLauncher servicesStarter = new ServerLauncher(config);
-        servicesStarter.getServer().join();
-    }
-}
diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/.DS_Store b/microservice-server/src/test/java/ch/ethz/sis/microservices/server/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3
zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!(
z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ
zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv
j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I

diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/.DS_Store b/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3
zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!(
z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ
zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv
j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I

diff --git a/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/.DS_Store b/microservice-server/src/test/java/ch/ethz/sis/microservices/server/services/store/.DS_Store
deleted file mode 100644
index ead2009953af184cbc64f6aa27ab9ecfdc3e0470..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeHKO-}+b5Pd}s7%v<-?jKO%KiCjVJQy$P8DUugg<Z0{VB%^2hkw>L(*_~PK@TLD
znWXdD`DmxFWJ>|K-fDaev;nl(1RLj6KZy9H?MWk81f9+?M~)%JxTQ8Z1qS5oI_UG<
z-jQMZ{4$>794QJsQkST3g;$>I8pCBZx?7c1!Q4+g(I-(Qy7aFYk>Q1XnKR*dL2t%v
z@h=&dV?sToeSsN06WVinBx*!Ui2?fw*PhWTa}QWs&YU-nmds4lHle>_uFR6?yuOaL
zj#FG}Zozt`x-Lfr<GRf8yOC;jH?$>~Qm6Dy@u9I&$KkofH)c)SoXHBZ()W6PB-P1^
z;;(ccDf@q8{XVe%>k~VLpQ6=h3>X7PWPo?JNbAC*X=A_`Fa|aZ$oC;)6O04a9`(~f
zrB482lV%n6<t-sOQNTE0?U5de^QlCi>cSJl`E=T&5ElomJ^FMwU77QQm0ftDI9;9g
zNW<Y`kEV?QV_=toGe2z0{eN@#{lA-JBV)iA_*V?LX8)nz<CenRy0<yGYa_O2HW7)d
mJ#JFi(W{uTaus*jRA`T+LyQB~9%-T29|5JolreBr2EG7sPHkcU

-- 
GitLab