/** * This method handles HTTP POST requests with JSON data. It sends an add operation to the * listener passing it the JSON data. * * @param json A string in JSON format. * @return Response with the appropriate HTTP code. */ @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response add(String json) { RestListener listener = RestManager.getListener(); Response response; try { log.info("Add request with json: {}", json); listener.add(parseMap(json)); response = Response.ok().build(); } catch (RestInvalidException e) { log.info("Add request was invalid: {}", e.getMessage()); response = Response.status(Response.Status.BAD_REQUEST) .entity(toMap(e, Response.Status.BAD_REQUEST)) .build(); } catch (Exception e) { e.printStackTrace(); response = Response.serverError().entity(toMap(e, Response.Status.INTERNAL_SERVER_ERROR)).build(); } return response; }
/** * This methods handles HTTP DELETE requests. It sends an remove operation to the listener passing * it an ID. * * @param id The ID sent by the user on the request * @return Response with the appropriate HTTP code. */ @DELETE @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public Response remove(@PathParam("id") String id) { RestListener listener = RestManager.getListener(); Response response; // Check if the listener accepted the operation try { log.info("Remove request with id: {}", id); listener.remove(id); response = Response.ok().build(); } catch (RestNotFoundException e) { log.info("Remove request invalid: {}", e.getMessage()); e.printStackTrace(); response = Response.status(Response.Status.NOT_FOUND) .entity(toMap(e, Response.Status.NOT_FOUND)) .build(); } catch (Exception e) { e.printStackTrace(); response = Response.serverError().entity(toMap(e, Response.Status.INTERNAL_SERVER_ERROR)).build(); } return response; }
/** * This method handles HTTP GET requests at path /list. It responds with a list in JSON form. * * @return Response with the appropriate HTTP code. */ @GET @Produces(MediaType.APPLICATION_JSON) public Response list() { RestListener listener = RestManager.getListener(); Response response; try { List<Map<String, Object>> list = listener.list(); log.info("List request {}", list); response = Response.ok().entity(list).build(); } catch (Exception e) { e.printStackTrace(); response = Response.serverError().entity(toMap(e, Response.Status.INTERNAL_SERVER_ERROR)).build(); } return response; }