diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..2bb7860
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index 3d9adc4..aa9bcff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
/.gradle
+/bin
/.settings
/build
-/gradle
.project
gradlew
gradlew.bat
diff --git a/build.gradle b/build.gradle
index 1c086c6..364c23e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,9 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * This is a general purpose Gradle build.
- * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
- */
+plugins {
+ id 'java'
+}
-apply plugin: 'java'
+group = 'com.omarnyte'
+version = '1.1.2'
repositories {
mavenCentral()
@@ -26,21 +24,23 @@ def defaultPort = 8888
def demoDirectoryPath = System.getProperty("user.dir") + '/src/test/resources/demoFiles'
def testDirectoryPath = System.getProperty("user.dir") + '/src/test/resources/testFiles'
+def mainClasspath = "com/omarnyte/Main"
+
task startCorsServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
- main = "Main"
+ main = mainClasspath
args "-port", corsPort, "-dir", corsDirectoryPath
}
task startDemoServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
- main = "Main"
+ main = mainClasspath
args "-port", defaultPort, "-dir", demoDirectoryPath
}
task startTestServer(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
- main = "Main"
+ main = mainClasspath
args "-port", defaultPort, "-dir", testDirectoryPath
}
@@ -68,6 +68,6 @@ test {
jar {
manifest {
- attributes 'Main-Class': 'Main'
+ attributes 'Main-Class': 'com.omarnyte.Main'
}
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..758de96
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..2d80b69
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/src/main/java/Handler/Handler.java b/src/main/java/Handler/Handler.java
deleted file mode 100644
index 4b95bcb..0000000
--- a/src/main/java/Handler/Handler.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public interface Handler {
-
- public Response generateResponse(Request request);
-
-}
\ No newline at end of file
diff --git a/src/main/java/CLIParser.java b/src/main/java/com/omarnyte/CliParser.java
similarity index 85%
rename from src/main/java/CLIParser.java
rename to src/main/java/com/omarnyte/CliParser.java
index 1969d38..c1b2a32 100644
--- a/src/main/java/CLIParser.java
+++ b/src/main/java/com/omarnyte/CliParser.java
@@ -1,10 +1,14 @@
+package com.omarnyte;
+
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-public class CLIParser {
+import com.omarnyte.exception.MissingFlagException;
+import com.omarnyte.exception.UnsupportedFlagException;
+
+public class CliParser {
private static final String DIRECTORY_FLAG = "-dir";
private static final String PORT_FLAG = "-port";
private static final List VALID_STORE_FLAGS = Arrays.asList( DIRECTORY_FLAG );
@@ -13,7 +17,7 @@ public class CLIParser {
private String[] args;
private HashMap flagsMap;
- public CLIParser(String[] args) throws UnsupportedFlagException {
+ public CliParser(String[] args) throws UnsupportedFlagException {
this.args = args;
this.flagsMap = createFlagsMap();
}
@@ -39,11 +43,11 @@ public String getDirectory() {
}
public String printValidFlags() {
- return String.join(", ", this.VALID_FLAGS);
+ return String.join(", ", VALID_FLAGS);
}
public String printValidStoreFlags() {
- return String.join(", ", this.VALID_STORE_FLAGS);
+ return String.join(", ", VALID_STORE_FLAGS);
}
private HashMap createFlagsMap() throws UnsupportedFlagException {
diff --git a/src/main/java/ClientThread.java b/src/main/java/com/omarnyte/ClientThread.java
similarity index 84%
rename from src/main/java/ClientThread.java
rename to src/main/java/com/omarnyte/ClientThread.java
index 7d59b36..659d765 100644
--- a/src/main/java/ClientThread.java
+++ b/src/main/java/com/omarnyte/ClientThread.java
@@ -1,9 +1,18 @@
+package com.omarnyte;
+
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.middleware.Middleware;
+import com.omarnyte.request.Request;
+import com.omarnyte.request.RequestParser;
+import com.omarnyte.response.Response;
+import com.omarnyte.response.ResponseFormatter;
+
public class ClientThread implements Runnable {
private Socket clientSocket;
private BufferedReader in;
diff --git a/src/main/java/CorsMiddleware.java b/src/main/java/com/omarnyte/CorsMiddleware.java
similarity index 87%
rename from src/main/java/CorsMiddleware.java
rename to src/main/java/com/omarnyte/CorsMiddleware.java
index ca8fcf4..541ba62 100644
--- a/src/main/java/CorsMiddleware.java
+++ b/src/main/java/com/omarnyte/CorsMiddleware.java
@@ -1,5 +1,11 @@
+package com.omarnyte;
+
import java.util.HashMap;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.middleware.Middleware;
+import com.omarnyte.response.Response;
+
public class CorsMiddleware extends Middleware {
public Response applyMiddleware(Response originalResponse) {
diff --git a/src/main/java/Directory.java b/src/main/java/com/omarnyte/Directory.java
similarity index 97%
rename from src/main/java/Directory.java
rename to src/main/java/com/omarnyte/Directory.java
index 1a114fe..a6eab9f 100644
--- a/src/main/java/Directory.java
+++ b/src/main/java/com/omarnyte/Directory.java
@@ -1,17 +1,20 @@
-import java.io.BufferedReader;
+package com.omarnyte;
+
import java.io.File;
import java.io.FileWriter;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
+import com.omarnyte.exception.NonexistentDirectoryException;
+
public class Directory {
private static final String DEFAULT_FILE_TYPE = "application/octet-stream";
private static final Map MIME_TYPES = Map.ofEntries(
+ Map.entry("css", "text/css"),
Map.entry("gif", "image/gif"),
Map.entry("html", "text/html"),
Map.entry("jpg", "image/jpeg"),
@@ -130,5 +133,4 @@ private String getExtension(String filePath) {
return filePath.split("\\.")[1];
}
-
}
diff --git a/src/main/java/Main.java b/src/main/java/com/omarnyte/Main.java
similarity index 86%
rename from src/main/java/Main.java
rename to src/main/java/com/omarnyte/Main.java
index e4f0c3c..80d1478 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/com/omarnyte/Main.java
@@ -1,14 +1,25 @@
+package com.omarnyte;
+
import java.util.HashMap;
-
+
+import com.omarnyte.CliParser;
+import com.omarnyte.exception.*;
+import com.omarnyte.handler.*;
+import com.omarnyte.handler.NotFoundHandler;
+import com.omarnyte.middleware.Middleware;
+import com.omarnyte.middleware.MiddlewareConfig;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.UrlDecoder;
+
public class Main {
private final static int DEFAULT_PORT_NUMBER = 8888;
private final static String AUTH_ROUTE = "/api/authenticate";
- private static CLIParser parser;
+ private static CliParser parser;
private static Directory directory;
public static void main(String[] args) {
try {
- parser = new CLIParser(args);
+ parser = new CliParser(args);
directory = extractDirectory();
Handler defaultHandler = new NotFoundHandler(directory);
@@ -57,7 +68,6 @@ private static Router setUpRouter(Handler defaultHandler) {
private static HashMap createRoutesMap() {
HashMap routes = new HashMap();
- String rootPath = System.getProperty("user.dir");
routes.put("/*", new ServerHandler(HttpMethod.SUPPORTED_METHODS));
routes.put("/", new DirectoryHandler(directory));
routes.put("/echo", new EchoHandler());
diff --git a/src/main/java/Router.java b/src/main/java/com/omarnyte/Router.java
similarity index 75%
rename from src/main/java/Router.java
rename to src/main/java/com/omarnyte/Router.java
index 9cba0a6..63546f5 100644
--- a/src/main/java/Router.java
+++ b/src/main/java/com/omarnyte/Router.java
@@ -1,5 +1,16 @@
+package com.omarnyte;
+
import java.util.HashMap;
+import com.omarnyte.exception.NonexistentDirectoryException;
+import com.omarnyte.handler.DirectoryHandler;
+import com.omarnyte.handler.FileHandler;
+import com.omarnyte.handler.Handler;
+import com.omarnyte.handler.PatchHandler;
+import com.omarnyte.jsonpatch.JsonPatchParser;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.Response;
+
public class Router {
private Handler defaultHandler;
private HashMap routes;
diff --git a/src/main/java/Server.java b/src/main/java/com/omarnyte/Server.java
similarity index 95%
rename from src/main/java/Server.java
rename to src/main/java/com/omarnyte/Server.java
index f3cc9f3..18f61c8 100644
--- a/src/main/java/Server.java
+++ b/src/main/java/com/omarnyte/Server.java
@@ -1,3 +1,5 @@
+package com.omarnyte;
+
import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
@@ -5,6 +7,8 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
+import com.omarnyte.middleware.Middleware;
+
public class Server {
private Middleware middleware;
private int port;
diff --git a/src/main/java/Authentication/Authenticator.java b/src/main/java/com/omarnyte/authentication/Authenticator.java
similarity index 93%
rename from src/main/java/Authentication/Authenticator.java
rename to src/main/java/com/omarnyte/authentication/Authenticator.java
index 374f6e4..2cad355 100644
--- a/src/main/java/Authentication/Authenticator.java
+++ b/src/main/java/com/omarnyte/authentication/Authenticator.java
@@ -1,8 +1,12 @@
+package com.omarnyte.authentication;
+
import java.util.Base64;
-import java.util.Base64.Decoder;
-import java.util.HashMap;
import java.util.List;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.middleware.Middleware;
+import com.omarnyte.request.Request;
+
public class Authenticator extends Middleware {
private String authRoute;
private Credentials credentials;
diff --git a/src/main/java/Authentication/Credentials.java b/src/main/java/com/omarnyte/authentication/Credentials.java
similarity index 90%
rename from src/main/java/Authentication/Credentials.java
rename to src/main/java/com/omarnyte/authentication/Credentials.java
index daa2f69..6936dda 100644
--- a/src/main/java/Authentication/Credentials.java
+++ b/src/main/java/com/omarnyte/authentication/Credentials.java
@@ -1,3 +1,5 @@
+package com.omarnyte.authentication;
+
public class Credentials {
private String password;
private String username;
diff --git a/src/main/java/Exception/BadRequestException.java b/src/main/java/com/omarnyte/exception/BadRequestException.java
similarity index 79%
rename from src/main/java/Exception/BadRequestException.java
rename to src/main/java/com/omarnyte/exception/BadRequestException.java
index f03680b..963f2b5 100644
--- a/src/main/java/Exception/BadRequestException.java
+++ b/src/main/java/com/omarnyte/exception/BadRequestException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class BadRequestException extends Exception {
public BadRequestException(String message) {
diff --git a/src/main/java/Exception/LoggerException.java b/src/main/java/com/omarnyte/exception/LoggerException.java
similarity index 78%
rename from src/main/java/Exception/LoggerException.java
rename to src/main/java/com/omarnyte/exception/LoggerException.java
index b4e70b8..d2c99b3 100644
--- a/src/main/java/Exception/LoggerException.java
+++ b/src/main/java/com/omarnyte/exception/LoggerException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class LoggerException extends Exception {
public LoggerException(String message) {
diff --git a/src/main/java/Exception/MissingFlagException.java b/src/main/java/com/omarnyte/exception/MissingFlagException.java
similarity index 84%
rename from src/main/java/Exception/MissingFlagException.java
rename to src/main/java/com/omarnyte/exception/MissingFlagException.java
index d969c27..20faace 100644
--- a/src/main/java/Exception/MissingFlagException.java
+++ b/src/main/java/com/omarnyte/exception/MissingFlagException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class MissingFlagException extends Exception {
public MissingFlagException (String flagType) {
diff --git a/src/main/java/Exception/NonexistentDirectoryException.java b/src/main/java/com/omarnyte/exception/NonexistentDirectoryException.java
similarity index 85%
rename from src/main/java/Exception/NonexistentDirectoryException.java
rename to src/main/java/com/omarnyte/exception/NonexistentDirectoryException.java
index bfe0901..416dbe1 100644
--- a/src/main/java/Exception/NonexistentDirectoryException.java
+++ b/src/main/java/com/omarnyte/exception/NonexistentDirectoryException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class NonexistentDirectoryException extends Exception {
public NonexistentDirectoryException(String directory) {
diff --git a/src/main/java/Exception/UnprocessableEntityException.java b/src/main/java/com/omarnyte/exception/UnprocessableEntityException.java
similarity index 81%
rename from src/main/java/Exception/UnprocessableEntityException.java
rename to src/main/java/com/omarnyte/exception/UnprocessableEntityException.java
index 4eb944a..1de0b54 100644
--- a/src/main/java/Exception/UnprocessableEntityException.java
+++ b/src/main/java/com/omarnyte/exception/UnprocessableEntityException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class UnprocessableEntityException extends Exception {
public UnprocessableEntityException (String message) {
diff --git a/src/main/java/Exception/UnsupportedFlagException.java b/src/main/java/com/omarnyte/exception/UnsupportedFlagException.java
similarity index 84%
rename from src/main/java/Exception/UnsupportedFlagException.java
rename to src/main/java/com/omarnyte/exception/UnsupportedFlagException.java
index 2d568c2..2cd3d67 100644
--- a/src/main/java/Exception/UnsupportedFlagException.java
+++ b/src/main/java/com/omarnyte/exception/UnsupportedFlagException.java
@@ -1,3 +1,5 @@
+package com.omarnyte.exception;
+
public class UnsupportedFlagException extends Exception {
public UnsupportedFlagException (String flag) {
diff --git a/src/main/java/Handler/AuthHandler.java b/src/main/java/com/omarnyte/handler/AuthHandler.java
similarity index 63%
rename from src/main/java/Handler/AuthHandler.java
rename to src/main/java/com/omarnyte/handler/AuthHandler.java
index 6371563..22066e5 100644
--- a/src/main/java/Handler/AuthHandler.java
+++ b/src/main/java/com/omarnyte/handler/AuthHandler.java
@@ -1,3 +1,10 @@
+package com.omarnyte.handler;
+
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+
public class AuthHandler implements Handler {
private final static String AUTH_SCHEME = "Basic";
diff --git a/src/main/java/Handler/DirectoryHandler.java b/src/main/java/com/omarnyte/handler/DirectoryHandler.java
similarity index 87%
rename from src/main/java/Handler/DirectoryHandler.java
rename to src/main/java/com/omarnyte/handler/DirectoryHandler.java
index bd653fe..47269b5 100644
--- a/src/main/java/Handler/DirectoryHandler.java
+++ b/src/main/java/com/omarnyte/handler/DirectoryHandler.java
@@ -1,8 +1,16 @@
-import java.io.File;
-import java.io.UnsupportedEncodingException;
+package com.omarnyte.handler;
+
import java.util.Arrays;
import java.util.List;
+import com.omarnyte.Directory;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.request.Request;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+
public class DirectoryHandler implements Handler {
private static final List SUPPORTED_METHODS = Arrays.asList(
HttpMethod.GET,
diff --git a/src/main/java/Handler/EchoHandler.java b/src/main/java/com/omarnyte/handler/EchoHandler.java
similarity index 83%
rename from src/main/java/Handler/EchoHandler.java
rename to src/main/java/com/omarnyte/handler/EchoHandler.java
index 5317f7c..d3a48db 100644
--- a/src/main/java/Handler/EchoHandler.java
+++ b/src/main/java/com/omarnyte/handler/EchoHandler.java
@@ -1,16 +1,20 @@
-import java.io.UnsupportedEncodingException;
+package com.omarnyte.handler;
+
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+
public class EchoHandler implements Handler {
- private static final String timeFormat = "hh:mm:ss";
+ private static final String TIME_FORMAT = "hh:mm:ss";
public Response generateResponse(Request request) {
String method = request.getMethod();
- String statusCodeAndReasonPhrase;
- String messageBody = "";
switch (method) {
case "HEAD":
return buildHeadResponse();
@@ -46,7 +50,7 @@ private String createMessageBody() {
}
private String getFormattedTime() {
- DateFormat dateFormat = new SimpleDateFormat(this.timeFormat);
+ DateFormat dateFormat = new SimpleDateFormat(TIME_FORMAT);
return dateFormat.format(new Date());
}
diff --git a/src/main/java/Handler/FileHandler.java b/src/main/java/com/omarnyte/handler/FileHandler.java
similarity index 91%
rename from src/main/java/Handler/FileHandler.java
rename to src/main/java/com/omarnyte/handler/FileHandler.java
index e3e9a12..8b64bd9 100644
--- a/src/main/java/Handler/FileHandler.java
+++ b/src/main/java/com/omarnyte/handler/FileHandler.java
@@ -1,8 +1,19 @@
+package com.omarnyte.handler;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import com.omarnyte.Directory;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.http.MimeType;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+
public class FileHandler implements Handler {
private static final List SUPPORTED_METHODS = Arrays.asList(
HttpMethod.DELETE,
diff --git a/src/main/java/Handler/FormHandler.java b/src/main/java/com/omarnyte/handler/FormHandler.java
similarity index 88%
rename from src/main/java/Handler/FormHandler.java
rename to src/main/java/com/omarnyte/handler/FormHandler.java
index 351678d..ac90907 100644
--- a/src/main/java/Handler/FormHandler.java
+++ b/src/main/java/com/omarnyte/handler/FormHandler.java
@@ -1,9 +1,19 @@
-import java.io.File;
+package com.omarnyte.handler;
+
import java.util.HashMap;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-
+
+import com.omarnyte.Directory;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+import com.omarnyte.util.Util;
+
public class FormHandler implements Handler {
private final static String DESTINATION_DIRECTORY_URI = "/POSTed";
private final static String POSTED_FILE_EXTENSION = ".txt";
diff --git a/src/main/java/com/omarnyte/handler/Handler.java b/src/main/java/com/omarnyte/handler/Handler.java
new file mode 100644
index 0000000..93166a8
--- /dev/null
+++ b/src/main/java/com/omarnyte/handler/Handler.java
@@ -0,0 +1,10 @@
+package com.omarnyte.handler;
+
+import com.omarnyte.request.Request;
+import com.omarnyte.response.Response;
+
+public interface Handler {
+
+ public Response generateResponse(Request request);
+
+}
\ No newline at end of file
diff --git a/src/main/java/Handler/NotFoundHandler.java b/src/main/java/com/omarnyte/handler/NotFoundHandler.java
similarity index 88%
rename from src/main/java/Handler/NotFoundHandler.java
rename to src/main/java/com/omarnyte/handler/NotFoundHandler.java
index 4cc2805..d38ac90 100644
--- a/src/main/java/Handler/NotFoundHandler.java
+++ b/src/main/java/com/omarnyte/handler/NotFoundHandler.java
@@ -1,11 +1,16 @@
-import java.io.File;
-import java.io.IOException;
+package com.omarnyte.handler;
+
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
+
+import com.omarnyte.Directory;
+import com.omarnyte.http.MimeType;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+
public class NotFoundHandler implements Handler {
private Directory directory;
diff --git a/src/main/java/Handler/PatchHandler.java b/src/main/java/com/omarnyte/handler/PatchHandler.java
similarity index 83%
rename from src/main/java/Handler/PatchHandler.java
rename to src/main/java/com/omarnyte/handler/PatchHandler.java
index d09c9e8..b6b303f 100644
--- a/src/main/java/Handler/PatchHandler.java
+++ b/src/main/java/com/omarnyte/handler/PatchHandler.java
@@ -1,5 +1,18 @@
+package com.omarnyte.handler;
+
import java.util.ArrayList;
+import com.omarnyte.Directory;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.exception.UnprocessableEntityException;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.http.MimeType;
+import com.omarnyte.jsonpatch.JsonPatchOperation;
+import com.omarnyte.jsonpatch.JsonPatchParser;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+
public class PatchHandler implements Handler {
private Directory directory;
private JsonPatchParser jsonPatchParser;
diff --git a/src/main/java/Handler/PeopleHandler.java b/src/main/java/com/omarnyte/handler/PeopleHandler.java
similarity index 85%
rename from src/main/java/Handler/PeopleHandler.java
rename to src/main/java/com/omarnyte/handler/PeopleHandler.java
index eb91952..bca56e5 100644
--- a/src/main/java/Handler/PeopleHandler.java
+++ b/src/main/java/com/omarnyte/handler/PeopleHandler.java
@@ -1,7 +1,18 @@
+package com.omarnyte.handler;
+
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
+import com.omarnyte.Directory;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.http.MimeType;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+import com.omarnyte.util.Util;
+
public class PeopleHandler implements Handler {
private final static String DESTINATION_DIRECTORY_URI = "/people";
private final static String[] SUPPORTED_MEDIA_TYPES = {
diff --git a/src/main/java/Handler/QueryHandler.java b/src/main/java/com/omarnyte/handler/QueryHandler.java
similarity index 88%
rename from src/main/java/Handler/QueryHandler.java
rename to src/main/java/com/omarnyte/handler/QueryHandler.java
index a09b7ba..05e0168 100644
--- a/src/main/java/Handler/QueryHandler.java
+++ b/src/main/java/com/omarnyte/handler/QueryHandler.java
@@ -1,7 +1,18 @@
+package com.omarnyte.handler;
+
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
+import com.omarnyte.http.MessageHeader;
+import com.omarnyte.http.MimeType;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.request.UrlDecoder;
+import com.omarnyte.response.HttpStatusCode;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+
public class QueryHandler implements Handler {
private static final List SUPPORTED_METHODS = Arrays.asList(
HttpMethod.GET,
diff --git a/src/main/java/Handler/ServerHandler.java b/src/main/java/com/omarnyte/handler/ServerHandler.java
similarity index 73%
rename from src/main/java/Handler/ServerHandler.java
rename to src/main/java/com/omarnyte/handler/ServerHandler.java
index 0f1041a..a45d22b 100644
--- a/src/main/java/Handler/ServerHandler.java
+++ b/src/main/java/com/omarnyte/handler/ServerHandler.java
@@ -1,5 +1,12 @@
+package com.omarnyte.handler;
+
import java.util.List;
+import com.omarnyte.request.HttpMethod;
+import com.omarnyte.request.Request;
+import com.omarnyte.response.Response;
+import com.omarnyte.util.ResponseUtil;
+
public class ServerHandler implements Handler {
private List supportedMethods;
diff --git a/src/main/java/MessageHeader.java b/src/main/java/com/omarnyte/http/MessageHeader.java
similarity index 97%
rename from src/main/java/MessageHeader.java
rename to src/main/java/com/omarnyte/http/MessageHeader.java
index a2ce34a..8895dfe 100644
--- a/src/main/java/MessageHeader.java
+++ b/src/main/java/com/omarnyte/http/MessageHeader.java
@@ -1,3 +1,5 @@
+package com.omarnyte.http;
+
import java.io.UnsupportedEncodingException;
public class MessageHeader {
diff --git a/src/main/java/MimeType.java b/src/main/java/com/omarnyte/http/MimeType.java
similarity index 94%
rename from src/main/java/MimeType.java
rename to src/main/java/com/omarnyte/http/MimeType.java
index d172086..6972a16 100644
--- a/src/main/java/MimeType.java
+++ b/src/main/java/com/omarnyte/http/MimeType.java
@@ -1,3 +1,5 @@
+package com.omarnyte.http;
+
import java.util.Map;
public class MimeType {
diff --git a/src/main/java/JsonPatch/JsonPatchAdd.java b/src/main/java/com/omarnyte/jsonpatch/JsonPatchAdd.java
similarity index 79%
rename from src/main/java/JsonPatch/JsonPatchAdd.java
rename to src/main/java/com/omarnyte/jsonpatch/JsonPatchAdd.java
index ead9c0d..80eb729 100644
--- a/src/main/java/JsonPatch/JsonPatchAdd.java
+++ b/src/main/java/com/omarnyte/jsonpatch/JsonPatchAdd.java
@@ -1,6 +1,10 @@
-import java.util.Arrays;
+package com.omarnyte.jsonpatch;
+
import org.json.JSONObject;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.exception.UnprocessableEntityException;
+
public class JsonPatchAdd extends JsonPatchOperation {
private String value;
diff --git a/src/main/java/JsonPatch/JsonPatchCopy.java b/src/main/java/com/omarnyte/jsonpatch/JsonPatchCopy.java
similarity index 86%
rename from src/main/java/JsonPatch/JsonPatchCopy.java
rename to src/main/java/com/omarnyte/jsonpatch/JsonPatchCopy.java
index 1fa9a35..65345a0 100644
--- a/src/main/java/JsonPatch/JsonPatchCopy.java
+++ b/src/main/java/com/omarnyte/jsonpatch/JsonPatchCopy.java
@@ -1,6 +1,10 @@
-import java.util.Arrays;
+package com.omarnyte.jsonpatch;
+
import org.json.JSONObject;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.exception.UnprocessableEntityException;
+
public class JsonPatchCopy extends JsonPatchOperation {
private String from;
diff --git a/src/main/java/JsonPatch/JsonPatchMove.java b/src/main/java/com/omarnyte/jsonpatch/JsonPatchMove.java
similarity index 86%
rename from src/main/java/JsonPatch/JsonPatchMove.java
rename to src/main/java/com/omarnyte/jsonpatch/JsonPatchMove.java
index 4cf0e92..f33e35e 100644
--- a/src/main/java/JsonPatch/JsonPatchMove.java
+++ b/src/main/java/com/omarnyte/jsonpatch/JsonPatchMove.java
@@ -1,6 +1,10 @@
-import java.util.Arrays;
+package com.omarnyte.jsonpatch;
+
import org.json.JSONObject;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.exception.UnprocessableEntityException;
+
public class JsonPatchMove extends JsonPatchOperation {
String from;
diff --git a/src/main/java/JsonPatch/JsonPatchOperation.java b/src/main/java/com/omarnyte/jsonpatch/JsonPatchOperation.java
similarity index 90%
rename from src/main/java/JsonPatch/JsonPatchOperation.java
rename to src/main/java/com/omarnyte/jsonpatch/JsonPatchOperation.java
index bf3fa34..de4356b 100644
--- a/src/main/java/JsonPatch/JsonPatchOperation.java
+++ b/src/main/java/com/omarnyte/jsonpatch/JsonPatchOperation.java
@@ -1,6 +1,10 @@
+package com.omarnyte.jsonpatch;
+
import org.json.JSONObject;
import java.util.Arrays;
+import com.omarnyte.exception.BadRequestException;
+import com.omarnyte.exception.UnprocessableEntityException;
public abstract class JsonPatchOperation {
protected String op;
@@ -11,7 +15,7 @@ public JsonPatchOperation(String op, String path) {
this.path = path;
}
- abstract String applyOperation(String original) throws BadRequestException, UnprocessableEntityException;
+ public abstract String applyOperation(String original) throws BadRequestException, UnprocessableEntityException;
protected String[] extractKeys(String path) throws BadRequestException {
String leadingSlash = "/";
diff --git a/src/main/java/JsonPatch/JsonPatchParser.java b/src/main/java/com/omarnyte/jsonpatch/JsonPatchParser.java
similarity index 94%
rename from src/main/java/JsonPatch/JsonPatchParser.java
rename to src/main/java/com/omarnyte/jsonpatch/JsonPatchParser.java
index ebff124..d90df73 100644
--- a/src/main/java/JsonPatch/JsonPatchParser.java
+++ b/src/main/java/com/omarnyte/jsonpatch/JsonPatchParser.java
@@ -1,15 +1,19 @@
+package com.omarnyte.jsonpatch;
+
import java.util.ArrayList;
import java.util.Iterator;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
+import com.omarnyte.exception.BadRequestException;
+
public class JsonPatchParser {
public ArrayList getOperations(String body) throws BadRequestException {
try {
ArrayList operations = new ArrayList();
- Iterator iterator = new JSONArray(body).iterator();
+ Iterator