package net.lr.tasklist.service;
import java.net.URI;
import java.util.Collection;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import net.lr.tasklist.model.Task;
import net.lr.tasklist.model.TaskService;
@Component(service=TaskServiceRest.class, property={"service.exported.interfaces=*",
"service.exported.configs=org.apache.cxf.rs",
"org.apache.cxf.rs.address=/tasklistRest"})
@Path("")
public class TaskServiceRest {
@Reference
TaskService taskService;
@Context
UriInfo uri;
@GET
@Path("{id}")
public Response getTask(@PathParam("id") Integer id) {
Task task = taskService.getTask(id);
return task == null ? Response.status(Status.NOT_FOUND).build() : Response.ok(task).build();
}
@POST
public Response addTask(Task task) {
taskService.addTask(task);
URI taskURI = uri.getRequestUriBuilder().path(TaskServiceRest.class, "getTask").build(task.getId());
return Response.created(taskURI).build();
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Collection<Task> getTasks() {
return taskService.getTasks();
}
@PUT
@Path("{id}")
public void updateTask(@PathParam("id") Integer id, Task task) {
task.setId(id);
taskService.updateTask(task);
}
@DELETE
@Path("{id}")
public void deleteTask(@PathParam("id") Integer id) {
taskService.deleteTask(id);
}
}