Package org.jboss.seam.rest.example.tasks.resource

Source Code of org.jboss.seam.rest.example.tasks.resource.CategoryResource

package org.jboss.seam.rest.example.tasks.resource;

import java.net.URI;
import java.util.Date;

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
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.Response;
import javax.ws.rs.core.UriInfo;

import org.jboss.seam.rest.example.tasks.entity.Category;
import org.jboss.seam.rest.example.tasks.entity.JaxbTaskWrapper;
import org.jboss.seam.rest.example.tasks.entity.Task;
import org.jboss.seam.rest.example.tasks.entity.TaskValidationGroup;
import org.jboss.seam.rest.validation.ValidateRequest;

/**
* CRUD resource for categories
*
* @author <a href="http://community.jboss.org/people/jharting">Jozef Hartinger</a>
*
*/
@Path("/category/{category}")
@Produces({ "application/xml", "application/json" })
@Consumes({ "application/xml", "application/json" })
@ValidateRequest(groups = TaskValidationGroup.class)
@Stateless
public class CategoryResource extends AbstractEntityResource {
    @Inject
    private TaskCollectionResource taskCollectionSubresource;

    @Path("/")
    // subresource locator
    public TaskCollectionResource getTasks() {
        return taskCollectionSubresource;
    }

    @PUT
    public void putCategory(@PathParam("category") String categoryName) {
        Category category = new Category(categoryName);
        em.persist(category);
    }

    @DELETE
    public void deleteCategory(@PathParam("category") String categoryName) {
        em.remove(loadCategory(categoryName));
    }

    /**
     * This method only makes sense at /category/{category}/task not /task
     *
     *
     */
    @POST
    @Path("/task")
    public Response createTask(JaxbTaskWrapper incommingTask, @PathParam("category") String categoryName,
            @Context UriInfo uriInfo) {
        Category category = loadCategory(categoryName);

        Task task = new Task();
        task.setCategory(category);
        task.setCreated(new Date());
        task.setUpdated(task.getCreated()); // set update date to creation date
        task.setName(incommingTask.getName());
        task.setResolved(false); // not resolved by default
        em.persist(task);
        long id = task.getId();

        URI uri = uriInfo.getBaseUriBuilder().path(TaskCollectionResource.class)
                .path(TaskCollectionResource.class, "getTaskSubresource").build(String.valueOf(id));
        return Response.created(uri).build();
    }
}
TOP

Related Classes of org.jboss.seam.rest.example.tasks.resource.CategoryResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.