diff --git a/pom.xml b/pom.xml
index c99ad94..b19c31c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,29 +8,36 @@
music-graph
0.1
-
org.apache.maven.plugins
- 3.6.2
+ 3.8.0
maven-compiler-plugin
- 1.8
- 1.8
+ 11
- org.apache.maven.plugins
- maven-jar-plugin
- 3.0.2
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+
net.simon987.Main
+
+ jar-with-dependencies
+
@@ -51,5 +58,45 @@
3.1.8
+
+
+ org.glassfish.jersey.containers
+ jersey-container-grizzly2-http
+ 2.28
+
+
+
+
+ org.glassfish.jersey.inject
+ jersey-hk2
+ 2.28
+
+
+
+
+ org.glassfish.jersey.media
+ jersey-media-json-jackson
+ 2.28
+
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.4.0-b180830.0359
+
+
+
+ com.sun.xml.bind
+ jaxb-osgi
+ 2.4.0-b180830.0438
+
+
+
+ com.sun.xml.bind
+ jaxb-core
+ 2.3.0.1
+
+
\ No newline at end of file
diff --git a/src/main/java/net/simon987/Main.java b/src/main/java/net/simon987/Main.java
index d005708..b12fa6e 100644
--- a/src/main/java/net/simon987/Main.java
+++ b/src/main/java/net/simon987/Main.java
@@ -1,9 +1,40 @@
package net.simon987;
+import net.simon987.logging.LogManager;
+import net.simon987.webapi.Index;
+import org.glassfish.grizzly.http.server.HttpServer;
+import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
+import org.glassfish.jersey.jackson.JacksonFeature;
+import org.glassfish.jersey.server.ResourceConfig;
+
+import java.net.URI;
+import java.util.logging.Logger;
+
public class Main {
+ private final static Logger LOGGER = LogManager.getLogger();
+
public static void main(String[] args) {
- System.out.println("Hello, world");
+ LOGGER.info("test");
+ startHttpServer();
+ }
+
+ private static void startHttpServer() {
+
+ ResourceConfig rc = new ResourceConfig();
+
+ rc.registerClasses(Index.class);
+ rc.registerClasses(JacksonFeature.class);
+
+ try {
+ HttpServer server = GrizzlyHttpServerFactory.createHttpServer(
+ new URI("http://localhost:8080/"),
+ rc);
+
+ server.start();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/src/main/java/net/simon987/logging/LogManager.java b/src/main/java/net/simon987/logging/LogManager.java
new file mode 100644
index 0000000..512e70f
--- /dev/null
+++ b/src/main/java/net/simon987/logging/LogManager.java
@@ -0,0 +1,21 @@
+package net.simon987.logging;
+
+import java.util.logging.*;
+
+public class LogManager {
+
+ private static Logger logger;
+
+ static {
+ logger = Logger.getLogger("music-graph");
+
+ Handler handler = new StdOutHandler();
+
+ logger.setUseParentHandlers(false);
+ logger.addHandler(handler);
+ }
+
+ public static Logger getLogger() {
+ return logger;
+ }
+}
diff --git a/src/main/java/net/simon987/logging/MusicGraphFormatter.java b/src/main/java/net/simon987/logging/MusicGraphFormatter.java
new file mode 100644
index 0000000..773ec64
--- /dev/null
+++ b/src/main/java/net/simon987/logging/MusicGraphFormatter.java
@@ -0,0 +1,24 @@
+package net.simon987.logging;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.logging.Formatter;
+import java.util.logging.LogRecord;
+
+
+public class MusicGraphFormatter extends Formatter {
+
+ private static final DateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");
+
+ @Override
+ public String format(LogRecord record) {
+
+ Date date = new Date();
+
+ return String.format(
+ "[%s] (MG) %s: %s\n",
+ dateFormat.format(date), record.getLevel(), record.getMessage()
+ );
+ }
+}
diff --git a/src/main/java/net/simon987/logging/StdOutHandler.java b/src/main/java/net/simon987/logging/StdOutHandler.java
new file mode 100644
index 0000000..e8b2a73
--- /dev/null
+++ b/src/main/java/net/simon987/logging/StdOutHandler.java
@@ -0,0 +1,20 @@
+package net.simon987.logging;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.StreamHandler;
+
+public class StdOutHandler extends StreamHandler {
+
+ StdOutHandler() {
+ super(System.out, new MusicGraphFormatter());
+
+ this.setLevel(Level.ALL);
+ }
+
+ @Override
+ public synchronized void publish(LogRecord record) {
+ super.publish(record);
+ flush();
+ }
+}
diff --git a/src/main/java/net/simon987/models/ApiInfo.java b/src/main/java/net/simon987/models/ApiInfo.java
new file mode 100644
index 0000000..3defd56
--- /dev/null
+++ b/src/main/java/net/simon987/models/ApiInfo.java
@@ -0,0 +1,20 @@
+package net.simon987.models;
+
+public class ApiInfo {
+
+ private String name;
+ private String version;
+
+ public ApiInfo(String name, String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+}
diff --git a/src/main/java/net/simon987/webapi/Index.java b/src/main/java/net/simon987/webapi/Index.java
new file mode 100644
index 0000000..eca4f16
--- /dev/null
+++ b/src/main/java/net/simon987/webapi/Index.java
@@ -0,0 +1,23 @@
+package net.simon987.webapi;
+
+import net.simon987.models.ApiInfo;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/")
+public class Index {
+
+ private static final ApiInfo INFO = new ApiInfo(
+ "music-graph",
+ "0.1"
+ );
+
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public ApiInfo get() {
+ return INFO;
+ }
+}