case MailItem.TYPE_WIKI:
    public void indexItem(Mailbox mbox, int itemId, byte itemType, long timestamp)    throws IOException, ServiceException {        int mboxId = mbox.getId();        MailboxIndex idx = mbox.getMailboxIndex();        MailItem item;        try {        	item = mbox.getItemById(null, itemId, itemType);        } catch (MailServiceException.NoSuchItemException e) {            // Because index commits are batched, during mailbox restore            // it's possible to see the commit record of indexing operation            // after the delete operation on the item being indexed.            // (delete followed by edit, for example)            // We can't distinguish this legitimate case from a case of            // really missing the item being indexed due to unexpected            // problem.  So just ignore the NoSuchItemException.            return;        }        IndexItem redo = new IndexItem(mboxId, item.getId(), itemType);        redo.start(System.currentTimeMillis());        redo.log();        redo.allowCommit();        switch (itemType) {        case MailItem.TYPE_APPOINTMENT:            break;        case MailItem.TYPE_MESSAGE:        case MailItem.TYPE_WIKI:                InputStream is = mbox.getMessageById(null, itemId).getRawMessage();                MimeMessage mm;    			try {    				mm = new MimeMessage(JMSession.getSession(), is);                    ParsedMessage pm = new ParsedMessage(mm, timestamp, mbox.attachmentsIndexingEnabled());                    indexMessage(redo, idx, itemId, pm);    			} catch (Throwable e) {                    mLog.warn("Skipping indexing; Unable to parse message " + itemId + ": " + e.toString(), e);                    // Eat up all errors during message analysis.  Throwing                    // anything here will force server halt during crash                    // recovery.  Because we can't possibly predict all                    // data-dependent message parse problems, we opt to live                    // with unindexed messages rather than P1 support calls.                        // Write abort record for this item, to prevent repeat calls                    // to index this unindexable item.                    redo.abort();                } finally {        			is.close();                }                break;            case MailItem.TYPE_CONTACT:                indexContact(redo, idx, itemId, (Contact) item);                break;            case MailItem.TYPE_NOTE:                indexNote(redo, idx, itemId, (Note) item);                break;            default:                redo.abort();                throw ServiceException.FAILURE("Invalid item type for indexing: type=" + itemType, null);        }    }