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; + } +}