@After(on = "register", stages = LifecycleStage.BindingAndValidation)
  public void userViewInterceptor() throws Exception {
    log.info("RegisterInterceptor.intercept()");

    AccountTypeConverter atc = new AccountTypeConverter();

    /** Do Type Conversion */
    try {
      Account account =
          atc.convert(
              getContext().getRequest().getParameter("account"),
              Account.class,
              new ArrayList<ValidationError>());
      setAccount(account);
      log.info("    Set account to " + account.getId());
    } catch (Exception x) {
      x.printStackTrace();
      throw x;
    }

    try {
      ViewTypeConverter vtc = new ViewTypeConverter(getAccount());
      View view =
          vtc.convert(
              getContext().getRequest().getParameter("view"),
              View.class,
              new ArrayList<ValidationError>());
      setView(view);
      log.info("    Set view to " + view.getId());
    } catch (Exception x) {
      log.info("    Exception getting view: " + getContext().getRequest().getParameter("view"));
      throw x;
    }

    setEmail(getContext().getRequest().getParameter("email"));
    setUsername(getContext().getRequest().getParameter("username"));
    setPassword(getContext().getRequest().getParameter("password"));
  }
  public Resolution register() throws AjaxException, RegisterException {
    log.info("RegisterAction.register() - Creating new user / userview");

    //		Object nextPage = getContext().getRequest().getSession().getAttribute("nextPage");

    ConnectionSource conn = null;
    try {
      conn = EntityManager.getConnection();

      /** Check that the view allows creating users */
      Dao<View, String> vDao = DaoManager.createDao(conn, View.class);
      View view = vDao.queryForId(getView().getId().toString());

      if (!view.getCreateUser()) {
        log.info("    View does not allow creating new users");
        throw new AjaxException(this, "userView", "Create User Disabled");
      }

      Dao<UserView, String> uvDao = DaoManager.createDao(conn, UserView.class);
      Dao<User, String> uDao = DaoManager.createDao(conn, User.class);

      /**
       * Try to create a user and userview If this fails there is likely already a user with the
       * same name and account
       */
      try {
        log.info("    Creating new user in system: " + getAccount().getAlias());

        User user = new User();
        user.setAccount(getAccount());
        user.setEmail(getEmail());
        user.setName(getUsername());
        user.setPassword(getPassword());

        uDao.create(user);

        log.info("    Creating new userview in for: " + getView().getAlias());

        UserView userView = new UserView();
        userView.setUser(user);
        userView.setView(getView());

        uvDao.create(userView);

        getContext().setUser(user);
        getContext().setAccessLevel(MyActionBeanContext.ACCESS_LEVEL_PASSWORD);

        /** User exists but nextPage was not specified. Redirect to the manager page */
        if (getContext().getUser() != null && nextPage == null) {
          log.info("    User exists but nextpage is null - redirect to ManagerAction");
          RedirectResolution resolution =
              new RedirectResolution(ManagerAction.class).includeRequestParameters(true);
          return resolution;
        }

        log.info("    Login successful - redirect to " + nextPage);

        RedirectResolution resolution = new RedirectResolution(getNextPage());
        return resolution;

      } catch (SQLException x) {
        log.error("RegisterException", x);

        return new ErrorResolution(
            HttpServletResponse.SC_PRECONDITION_FAILED,
            "{\"result\":\"error\",\"message\":\"" + x.getMessage() + "\"}");
      }
    } catch (Exception x) {
      x.printStackTrace();

      log.error("RegisterException", x);

      getContext().getValidationErrors().add("entity", new SimpleError("create user error"));
      throw new RegisterException(this, getAccount(), getView(), "Exception encountered");
    } finally {
      try {
        conn.close();
      } catch (SQLException e) {
      }
    }
  }