public String update(Request req, Response res) { User user = userService.findUserByName(currentUserLoginName().toString()); HttpLocalizedOperationResult result = new HttpLocalizedOperationResult(); Map map = readRequestBodyAsJSON(req); String checkinAliases = null; if (map.containsKey("checkin_aliases")) { Object newAliases = map.get("checkin_aliases"); if (newAliases instanceof Collection) { checkinAliases = StringUtils.join((Collection) newAliases, ", "); } else if (newAliases instanceof String) { checkinAliases = (String) newAliases; } } TriState emailMe = TriState.from(String.valueOf(map.get("email_me"))); String email = (String) map.get("email"); User serializedUser = userService.save(user, TriState.from(null), emailMe, email, checkinAliases, result); String json = jsonizeAsTopLevelObject(req, writer -> UserRepresenter.toJSON(writer, serializedUser)); String etag = etagFor(json); setEtagHeader(res, etag); return json; } }
private String saveUserAndRenderResult(Request req, Response res, HttpLocalizedOperationResult result, User userToOperate, User userFromRequest, String username) throws IOException { userService.save(userToOperate, TriState.from(userFromRequest.isEnabled()), TriState.from(userFromRequest.isEmailMe()), userFromRequest.getEmail(), userFromRequest.getMatcher(), result); boolean isSaved = result.isSuccessful(); if (isSaved) { return writerForTopLevelObject(req, res, writer -> UserRepresenter.toJSON(writer, getUserToRepresent(userService.findUserByName(username), roleConfigService.getRolesForUser(Collections.singletonList(new Username(username)))))); } else { return renderHTTPOperationResult(result, req, res); } }