diff --git a/src/main/java/servlet/ThingsServlet.java b/src/main/java/servlet/ThingsServlet.java index d5f3e13..770a2fb 100644 --- a/src/main/java/servlet/ThingsServlet.java +++ b/src/main/java/servlet/ThingsServlet.java @@ -1,17 +1,67 @@ package servlet; +import things.Resource; import things.Things; +import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.time.format.ResolverStyle; +import java.util.Map; @WebServlet(name = "Things", urlPatterns = {"/things", "/things/*"}) public class ThingsServlet extends HttpServlet { private final Things things = new Things(); public ThingsServlet() { + super(); things.addSampleResources(); } - // TODO: Implement the GET, POST, PUT and DELETE methods. + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String uri = req.getRequestURI(); + + resp.setContentType("application/json"); + if(things.getResourceByURI(uri)==null){ + resp.sendError(404); + return; + } + + resp.getWriter().print(things.getResourceByURI(uri).getJSON()); + + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String uri = req.getRequestURI(); + Map params = req.getParameterMap(); + Resource.Type type = Resource.Type.valueOf(params.get("type")[0]); + String name = params.get("name")[0]; + + if(things.getResourceByURI(uri)==null) { + resp.sendError(404); + return; + } + + if(type.equals(Resource.Type.THING)) { + things.addThingWithName(name); + } else { + things.addChildToResourceWithURI(uri, name, type); + } + + } + + @Override + protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String uri = req.getRequestURI(); + if(things.getResourceByURI(uri)==null) { + resp.sendError(404); + return; + } + things.removeResourceByURI(uri); + } } diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html new file mode 100644 index 0000000..a684b03 --- /dev/null +++ b/src/main/webapp/index.html @@ -0,0 +1,10 @@ + + + + + HelloServlet + + +

Hello Servlet!

+ + \ No newline at end of file