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. * http://websystique.com/springmvc/spring-mvc-4-restful-web-services-crud-example-resttemplate/ */ package com._8x8.presentation.restController; import com._8x8.logic.service.UserService; import com._8x8.presentation.model.User; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; 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.RestController; import org.springframework.web.util.UriComponentsBuilder; @RestController @RequestMapping("/api") public class UserRestController { @Autowired UserService _userService; //Service which will do all data retrieval/manipulation work //-------------------Retrieve All Users-------------------------------------------------------- @RequestMapping(value = "/users/", method = RequestMethod.GET) public ResponseEntity<List<User>> listAllUsers() { List<User> users = _userService.GetUsers();// .findAllUsers(); if (users.isEmpty()) { return new ResponseEntity<List<User>>(HttpStatus.NO_CONTENT);//You many decide to return HttpStatus.NOT_FOUND } return new ResponseEntity<List<User>>(users, HttpStatus.OK); } //-------------------Retrieve Single User-------------------------------------------------------- @RequestMapping(value = "/user/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<User> getUser(@PathVariable("id") int id) { System.out.println("Fetching User with id " + id); User user = _userService.GetUserById(id); if (user == null) { System.out.println("User with id " + id + " not found"); return new ResponseEntity<User>(HttpStatus.NOT_FOUND); } return new ResponseEntity<User>(user, HttpStatus.OK); } //-------------------Create a User-------------------------------------------------------- @RequestMapping(value = "/user/", method = RequestMethod.POST) public ResponseEntity<Void> createUser(@RequestBody User user, UriComponentsBuilder ucBuilder) { System.out.println("Creating Username: " + user.getUsername()); if (_userService.isUserExist(user)) { System.out.println("A User with name " + user.getUsername() + " already exist"); return new ResponseEntity<Void>(HttpStatus.CONFLICT); } _userService.InsertUser(user); HttpHeaders headers = new HttpHeaders(); headers.setLocation(ucBuilder.path("/user/{id}").buildAndExpand(user.getId()).toUri()); return new ResponseEntity<Void>(headers, HttpStatus.CREATED); } //------------------- Update a User -------------------------------------------------------- @RequestMapping(value = "/user/{id}", method = RequestMethod.PUT) public ResponseEntity<User> updateUser(@PathVariable("id") int id, @RequestBody User user) { System.out.println("Updating User " + id); User currentUser = _userService.GetUserById(id);//.findById(id); if (currentUser == null) { System.out.println("User with id " + id + " not found"); return new ResponseEntity<User>(HttpStatus.NOT_FOUND); } _userService.UpdateUserById(user); return new ResponseEntity<User>(currentUser, HttpStatus.OK); } //------------------- Delete a User -------------------------------------------------------- @RequestMapping(value = "/user/{id}", method = RequestMethod.DELETE) public ResponseEntity<User> deleteUser(@PathVariable("id") int id) { System.out.println("Fetching & Deleting User with id " + id); // User user = userService.findById(id); // if (user == null) { // System.out.println("Unable to delete. User with id " + id + " not found"); // return new ResponseEntity<User>(HttpStatus.NOT_FOUND); // } _userService.RemoveUserById(id); return new ResponseEntity<User>(HttpStatus.NO_CONTENT); } //------------------- Delete All Users -------------------------------------------------------- @RequestMapping(value = "/users/", method = RequestMethod.DELETE) public ResponseEntity<User> deleteAllUsers() { // System.out.println("Deleting All Users"); // // userService.deleteAllUsers(); return new ResponseEntity<User>(HttpStatus.NO_CONTENT); } }