Ejemplo n.º 1
0
  @POST
  @Produces(MediaType.TEXT_HTML)
  public Response updateView(
      @Context UriInfo uri,
      @Context HttpServletRequest request,
      @FormParam("userName") String userName,
      @FormParam("displayName") String displayName,
      @FormParam("email") String email,
      @FormParam("company") String company) {

    ModelAndView view;
    ModelMap model = new ModelMap();
    ResponseBuilder builder;
    User user = new User();
    User currentUser;
    URI redirectURI;

    try {
      currentUser = getCurrentUser();
      model.addAttribute("user", currentUser);
      model.addAttribute("title", "Account Settings - " + getContextName());

      user.setDisplayName(displayName);
      user.setEmail(email);

      if (!company.isEmpty()) {
        user.setCompany(company);
      }

      getUserBo().update(userName, user);

      redirectURI = UriBuilder.fromUri(uri.getBaseUri()).path("account").build();
      setFlashMessage(request, "Your profile was updated successfully.");

      builder = Response.seeOther(redirectURI);
    } catch (UserNotFoundException e) {
      logger.warn("User not found", e);

      view = buildErrorView(Status.INTERNAL_SERVER_ERROR, e.getMessage());
      builder = Response.serverError().entity(view);
    } catch (NotAuthorizedException e) {
      logger.info("User unauthorized", e);

      view = buildErrorView(Status.UNAUTHORIZED, e.getMessage());
      builder = Response.status(Status.UNAUTHORIZED).entity(view);
    } catch (ValidationException e) {
      logger.info("A form field is not valid", e);

      Map<String, String> formInfo = new HashMap<String, String>();

      formInfo.put("userName", userName);
      formInfo.put("displayName", displayName);
      formInfo.put("email", email);
      formInfo.put("company", company);

      model.addAttribute("form_data", formInfo);
      model.addAttribute("form_error", e);

      view = new ModelAndView("user.detail", model);
      builder = Response.status(Status.BAD_REQUEST).entity(view);
    }

    return builder.build();
  }