putInfo(response, results);
    public Element handle(Element request, Map<String, Object> context) throws ServiceException {        if (sLog.isDebugEnabled())            sLog.debug("**Start SearchConv");        ZimbraSoapContext zc = getZimbraSoapContext(context);        Mailbox mbox = getRequestedMailbox(zc);        Mailbox.OperationContext octxt = zc.getOperationContext();        Session session = getSession(context);        // FIXME: should proxy if conversation is a qualified ID in another mailbox        int cid = (int) request.getAttributeLong(MailService.A_CONV_ID);        SearchParams params = parseCommonParameters(request, zc);        //        // append (conv:(convid)) onto the beginning of the queryStr        StringBuffer queryBuffer = new StringBuffer("conv:\"");        queryBuffer.append(cid);        queryBuffer.append("\" (");        queryBuffer.append(params.getQueryStr());        queryBuffer.append(")");        params.setQueryStr(queryBuffer.toString());        //         // force to group-by-message        params.setTypesStr(MailboxIndex.GROUP_BY_MESSAGE);        //ZimbraQueryResults results = this.getResults(mbox, params, lc, session);        SearchOperation op = new SearchOperation(session, zc, zc.getOperationContext(), mbox, Requester.SOAP,  params);        op.schedule();        ZimbraQueryResults results = op.getResults();                try {            Element response = zc.createElement(MailService.SEARCH_CONV_RESPONSE);            response.addAttribute(MailService.A_QUERY_OFFSET, Integer.toString(params.getOffset()));            SortBy sb = results.getSortBy();            response.addAttribute(MailService.A_SORTBY, sb.toString());            List<Message> msgs = mbox.getMessagesByConversation(octxt, cid, sb.getDbMailItemSortByte());            // filter out IMAP \Deleted messages from the message lists            Conversation conv = mbox.getConversationById(octxt, cid);            if (conv.isTagged(mbox.mDeletedFlag)) {                List<Message> raw = msgs;                msgs = new ArrayList<Message>();                for (Message msg : raw) {                    if (!msg.isTagged(mbox.mDeletedFlag))                        msgs.add(msg);                }            }            Element retVal = putHits(zc, response, msgs, results, params);            return retVal;        } finally {            results.doneWithSearchResults();        }    }