mData.date       = mMailbox.getOperationTimestamp(); mData.modContent = mMailbox.getOperationChangeID();
mData.date = mMailbox.getOperationTimestamp(); mData.contentChanged(mMailbox);
    void modify(Map attrs, boolean replace) throws ServiceException {        if (attrs == null || attrs.isEmpty()) {            if (replace)                throw ServiceException.INVALID_REQUEST("contact must have attributes", null);            return;        }        markItemModified(Change.MODIFIED_CONTENT | Change.MODIFIED_DATE);        if (replace)            mAttributes.clear();        for (Iterator it = attrs.entrySet().iterator(); it.hasNext(); ) {            Map.Entry entry = (Map.Entry) it.next();            String key   = StringUtil.stripControlCharacters((String) entry.getKey());            String value = StringUtil.stripControlCharacters((String) entry.getValue());            if (key != null && !key.equals("")) {                if (value != null && !value.equals(""))                    mAttributes.put(key, value);                else                    mAttributes.remove(key);            }        }        if (mAttributes.isEmpty())            throw ServiceException.INVALID_REQUEST("contact must have attributes", null);    	// XXX: should update mData.size and Mailbox.size and folder.size        mData.date       = mMailbox.getOperationTimestamp();        mData.modContent = mMailbox.getOperationChangeID();        saveData(getFileAsString());	}