@RequestMapping(value = "/person/{personId}", method = RequestMethod.POST)
  @ResponseBody
  public Person updatePerson(
      @PathVariable int personId,
      @RequestParam(value = "firstname", required = true) String firstname,
      @RequestParam(value = "lastname", required = true) String lastname,
      @RequestParam(value = "email", required = true) String email,
      @RequestParam(value = "description", required = false) String description,
      @RequestParam(value = "street", required = false) String street,
      @RequestParam(value = "city", required = false) String city,
      @RequestParam(value = "state", required = false) String state,
      @RequestParam(value = "zip", required = false) String zip,
      @RequestParam(value = "orgId", required = false) Integer orgId) {

    if (firstname == "" || lastname == "" || email == "") {
      throw new InvalidParameterException();
    }

    Person person = new Person(firstname, lastname, email);
    person.setId(personId);
    person.setDescription(description);
    Address address = new Address(street, city, state, zip);
    person.setAddress(address);
    if (orgId != null) {
      Organization org = new Organization();
      org.setId(orgId);
      person.setOrg(org);
    }

    personService.update(person);

    return person;
  }
 @RequestMapping(value = "/person/{personId}", method = RequestMethod.DELETE)
 @ResponseBody
 public Person deletePerson(@PathVariable int personId) {
   Person person = new Person();
   person.setId(personId);
   personService.delete(person);
   return person;
 }
  @RequestMapping(value = "/person/{id}", method = RequestMethod.GET)
  public String getPerson(@PathVariable int id, Model model) {

    Person person = personService.findByPersonId(id);
    if (person == null) {
      throw new ResourceNotFoundException();
    }
    model.addAttribute("id", person.getId());
    model.addAttribute("firstname", person.getFirstname());
    model.addAttribute("lastname", person.getLastname());
    model.addAttribute("email", person.getEmail());
    model.addAttribute("description", person.getDescription());
    model.addAttribute("address", person.getAddress());
    model.addAttribute("organization", person.getOrg());
    return "person";
  }