package org.toobs.framework.jms.email;
import java.util.ArrayList;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.toobs.framework.email.beans.EmailBean;
import org.toobs.framework.jms.AbstractJmsReceiver;
@SuppressWarnings("unchecked")
public class JmsEmailReceiver extends AbstractJmsReceiver {
private static Log log = LogFactory.getLog(JmsEmailReceiver.class);
public EmailBean recieveMessage() throws JmsEmailException {
Message msg = jmsTemplate.receive();
if (msg == null) {
return null;
}
EmailBean bean = new EmailBean();
MapMessage mapMessage = (MapMessage)msg;
try {
bean.setEmailSender(mapMessage.getString("sender"));
bean.setEmailSubject(mapMessage.getString("subject"));
bean.setRecipients(getRecipientList(mapMessage.getString("recipients")));
bean.setMessageHtml(mapMessage.getString("messageHtml"));
bean.setMessageText(mapMessage.getString("messageText"));
bean.setMailSenderKey(mapMessage.getString("mailSenderKey"));
bean.setAttempts(mapMessage.getInt("attempts"));
bean.setType(mapMessage.getInt("type"));
bean.setFailureCause(mapMessage.getString("failureCause"));
} catch (JMSException e) {
log.error("Exception getting email from queue: " + e.getMessage(), e);
throw new JmsEmailException(e);
}
return bean;
}
private ArrayList getRecipientList(String recipientList) {
String[] recipients = recipientList.split(",");
ArrayList list = new ArrayList();
for (int i=0; i<recipients.length; i++) {
list.add(recipients[i]);
}
return list;
}
}