docs: public void handleUpdateUser(String jsonp, String target,
              HttpServletRequest request,
              HttpServletResponse response, AuthenticationResult ar)
              throws IOException, ServletException {
          String update = request.getParameter("user");
          if (update == null || update.trim().length() == 0) {
              response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
              response.getWriter().print(buildClientResponse(jsonp, ClientResponse.UNEXPECTED_FAILURE, "Failed to get user information."));
              return;
          }
          try {
              User newUser = m_mapper.readValue(update, User.class);
              if (newUser == null) {
                  response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                  response.getWriter().print(buildClientResponse(jsonp, ClientResponse.UNEXPECTED_FAILURE, "Failed to parse user information."));
                  return;
              }
  
              DeploymentType newDeployment = CatalogUtil.getDeployment(new ByteArrayInputStream(getDeploymentBytes()));
              User user = null;
              String[] splitTarget = target.split("/");
              if (splitTarget.length == 3) {
                  user = findUser(splitTarget[2], newDeployment);
              }
              if (user == null) {
                  response.setStatus(HttpServletResponse.SC_NOT_FOUND);
                  response.getWriter().print(buildClientResponse(jsonp, ClientResponse.UNEXPECTED_FAILURE, "User not found"));
                  return;
              }
              user.setName(newUser.getName());
              user.setPassword(newUser.getPassword());
              user.setPlaintext(newUser.isPlaintext());
              user.setRoles(newUser.getRoles());
  
              String dep = CatalogUtil.getDeployment(newDeployment);
              if (dep == null || dep.trim().length() <= 0) {
                  response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                  response.getWriter().print(buildClientResponse(jsonp, ClientResponse.UNEXPECTED_FAILURE, "Failed to build deployment information."));
                  return;
              }
              Object[] params = new Object[]{null, dep};
              //Call sync as nothing else can happen when this is going on.
              SyncCallback cb = new SyncCallback();
              httpClientInterface.callProcedure(request.getRemoteHost(), ar, BatchTimeoutOverrideType.NO_TIMEOUT, cb, "@UpdateApplicationCatalog", params);
              cb.waitForResponse();
              ClientResponseImpl r = ClientResponseImpl.class.cast(cb.getResponse());
              if (r.getStatus() == ClientResponse.SUCCESS) {
                  response.getWriter().print(buildClientResponse(jsonp, ClientResponse.SUCCESS, "User Updated."));
              } else {
                  response.getWriter().print(HTTPClientInterface.asJsonp(jsonp, r.toJSONString()));
              }
  
          } catch (Exception ex) {
              m_log.error("Failed to update user from API", ex);
              response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
              response.getWriter().print(buildClientResponse(jsonp, ClientResponse.UNEXPECTED_FAILURE, Throwables.getStackTraceAsString(ex)));
          }
      }