@Override public void handle(Request req, Response res) { UserManager userMgr = null; String user = null; try { userMgr = Framework.getService(UserManager.class); if (userMgr == null) { handleError(res, "User Manager can't be loaded"); return; } user = (String) req.getAttributes().get("username"); if (user == null) { handleError(res, "you must specify an user to search"); return; } } catch (ClientException e) { handleError(res, e); return; } catch (Exception e) { handleError(res, "User Manager can't be loaded"); return; } try { DocumentModel userModel = null; if (user != null && !user.isEmpty()) { userModel = userMgr.getUserModel(user); } // build the XML response document holding the ref DOMDocumentFactory domfactory = new DOMDocumentFactory(); DOMDocument resultDocument = (DOMDocument) domfactory.createDocument(); if (userModel == null) { handleError(res, "User is not found"); return; } NuxeoPrincipal principal = userMgr.getPrincipal((String) userModel.getProperty("user", "username")); Element userElement = resultDocument.addElement("user"); userElement.addAttribute("username", principal.getName()); userElement.addAttribute("firstName", principal.getFirstName()); userElement.addAttribute("lastName", principal.getLastName()); userElement.addAttribute("email", (String) userModel.getProperty("user", "email")); userElement.addAttribute("company", principal.getCompany()); List<String> groups = principal.getAllGroups(); if (groups != null && groups.size() > 0) { for (String groupName : groups) { Element groupElement = userElement.addElement("group"); groupElement.addAttribute("name", groupName); } } Representation rep = new StringRepresentation(resultDocument.asXML(), MediaType.APPLICATION_XML); rep.setCharacterSet(CharacterSet.UTF_8); res.setEntity(rep); } catch (ClientException e) { handleError(res, e); } }