package at.technikumwien.movies; import javax.inject.Inject; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import java.net.URI; import java.util.List; @Path("/movie") public class MovieResource { @Inject private MoviesService moviesService; @Context private UriInfo uriInfo; @GET @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) public List retrieveAll() { return moviesService.findAll(); } @GET @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) @Path("/{id}") public Movie retrieve(@PathParam("id") long id) { return moviesService.findById(id); } @DELETE @Path("/{id}") public void delete(@PathParam("id") long id) { moviesService.removeById(id); } @POST @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) public Response create(Movie movie) { movie.setId(null); // Make sure that a new movie is added, not overwriting existing one List newMovies = moviesService.save(List.of(movie)); URI location = uriInfo.getAbsolutePathBuilder().path(newMovies.get(0).getId().toString()).build(); return Response.created(location).build(); } @PUT @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) @Path("/{id}") public void update(@PathParam("id") long id, Movie movie) { movie.setId(id); // Make sure that a new movie is added, not overwriting existing one moviesService.save(List.of(movie)); } }