Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package edu.mum.waa.webstore.controller; import edu.mum.waa.webstore.domain.Cart; import edu.mum.waa.webstore.domain.CartItem; import edu.mum.waa.webstore.domain.Product; import edu.mum.waa.webstore.service.CartService; import edu.mum.waa.webstore.service.ProductService; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; /** * * @author Rakesh Shrestha */ @Controller @RequestMapping(value = "rest/cart") public class CartRestController { @Autowired private CartService cartService; @Autowired private ProductService productService; @RequestMapping(method = RequestMethod.POST) public @ResponseBody Cart create(@RequestBody Cart cart) { return cartService.create(cart); } @RequestMapping(value = "/{cartId}", method = RequestMethod.GET) public @ResponseBody Cart read(@PathVariable(value = "cartId") String cartId) { return cartService.read(cartId); } @RequestMapping(value = "/{cartId}", method = RequestMethod.PUT) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void update(@PathVariable(value = "cartId") String cartId, @RequestBody Cart cart) { cartService.update(cartId, cart); } @RequestMapping(value = "/{cartId}", method = RequestMethod.DELETE) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void delete(@PathVariable(value = "cartId") String cartId) { cartService.delete(cartId); } @RequestMapping(value = "/add/{productId}", method = RequestMethod.PUT) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void addIItem(@PathVariable String productId, HttpServletRequest request) { String sessionId = request.getSession(true).getId(); Cart cart = cartService.read(sessionId); if (cart == null) { cart = cartService.create(new Cart(sessionId)); } Product product = productService.getProductById(productId); if (product == null) { throw new IllegalArgumentException(String.format("Product with id (%) not found", productId)); } cart.addCartItem(new CartItem(product)); cartService.update(sessionId, cart); } @RequestMapping(value = "/remove/{productId}", method = RequestMethod.PUT) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void removeItem(@PathVariable String productId, HttpServletRequest request) { String sessionId = request.getSession(true).getId(); Cart cart = cartService.read(sessionId); if (cart == null) { cartService.create(new Cart(sessionId)); } Product product = productService.getProductById(productId); if (product == null) { throw new IllegalArgumentException(String.format("Product with id (%) not found", productId)); } cart.removeCartItem(new CartItem(product)); cartService.update(sessionId, cart); } }