CalendarResource resource = prov.get(CalendarResourceBy.ID, id);
CalendarResource resource = prov.get(CalendarResourceBy.id, id);
    public Element handle(Element request, Map<String, Object> context)    throws ServiceException {        ZimbraSoapContext lc = getZimbraSoapContext(context);        Provisioning prov = Provisioning.getInstance();        String id = request.getAttribute(AdminService.E_ID);        Map<String, Object> attrs = AdminService.getAttrs(request);        CalendarResource resource = prov.get(CalendarResourceBy.ID, id);        if (resource == null)            throw AccountServiceException.NO_SUCH_CALENDAR_RESOURCE(id);        if (!canAccessAccount(lc, resource))            throw ServiceException.PERM_DENIED(                    "cannot access calendar resource account");        if (isDomainAdminOnly(lc)) {            for (Iterator it = attrs.keySet().iterator(); it.hasNext();) {                String attrName = (String) it.next();                if (!AttributeManager.getInstance().isDomainAdminModifiable(attrName))                    throw ServiceException.PERM_DENIED("can not modify attr: "+attrName);            }        }        // pass in true to checkImmutable        prov.modifyAttrs(resource, attrs, true);        ZimbraLog.security.info(ZimbraLog.encodeAttrs(                new String[] {"cmd", "ModifyCalendarResource", "name",                              resource.getName()}, attrs));        Element response =            lc.createElement(AdminService.MODIFY_CALENDAR_RESOURCE_RESPONSE);        ToXML.encodeCalendarResource(response, resource, true);        return response;    }