} else if (key.equals(BY_ID)) {
} else if (key.equals(AdminService.BY_ID)) {
	public Element handle(Element request, Map<String, Object> context) throws ServiceException {        ZimbraSoapContext lc = getZimbraSoapContext(context);        Provisioning prov = Provisioning.getInstance();        boolean applyCos = request.getAttributeBool(AdminService.A_APPLY_COS, true);                Element a = request.getElement(AdminService.E_ACCOUNT);	    String key = a.getAttribute(AdminService.A_BY);        String value = a.getText();	    Account account = null;        if (key.equals(BY_NAME)) {            account = prov.getAccountByName(value);        } else if (key.equals(BY_ID)) {            account = prov.getAccountById(value);        } else if (key.equals(BY_ADMIN_NAME)) {            account = prov.getAdminAccountByName(value);        } else if (key.equals(BY_FOREIGN_PRINCIPAL)) {            account = prov.getAccountByForeignPrincipal(value);        } else {            throw ServiceException.INVALID_REQUEST("unknown value for by: "+key, null);        }        if (account == null)            throw AccountServiceException.NO_SUCH_ACCOUNT(value);        if (!canAccessAccount(lc, account))            throw ServiceException.PERM_DENIED("can not access account");	    Element response = lc.createElement(AdminService.GET_ACCOUNT_RESPONSE);        ToXML.encodeAccount(response, account, applyCos);	    return response;	}