}
Email message = ms.retrieveMessage(emailId);
if (message == null)
throw new MessageSearchException("assertion failure: null message",logger);
logger.debug("indexing message {"+message+"}");
Document doc = new Document();
TempFiles tempFiles = Config.getTempFiles();
try {
writeMessageToDocument(message,doc,tempFiles);
String language = doc.get("lang");
if (language==null)
language = Config.getConfig().getIndexLanguage();
synchronized(indexLock) {
writer.addDocument(doc,AnalyzerFactory.getAnalyzer(language,AnalyzerFactory.Operation.INDEX));
}
logger.debug("message indexed successfully {"+message+",language='"+language+"'}");
} catch (MessagingException me)
{
throw new MessageSearchException("failed to decode message during indexing",me,logger);
} catch (IOException me) {
throw new MessageSearchException("failed to index message {"+message+"}",me,logger);
} catch (ExtractionException ee)
{
throw new MessageSearchException("failed to decode attachments in message {"+message+"}",ee,logger);
} catch (Exception e) {
throw new MessageSearchException("failed to index message",e,logger);
}
logger.debug("indexing message end {"+message+"}");
}