/** * Most of the code in the Qalingo project is copyrighted Hoteia and licensed * under the Apache License Version 2.0 (release version 0.8.0) * http://www.apache.org/licenses/LICENSE-2.0 * * Copyright (c) Hoteia, 2012-2014 * http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com * */ package org.hoteia.qalingo.core.jms.document.listener; import java.beans.ExceptionListener; import java.io.IOException; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hoteia.qalingo.core.domain.OrderPurchase; import org.hoteia.qalingo.core.domain.enumtype.OrderDocumentType; import org.hoteia.qalingo.core.jms.document.producer.GenerationDocumentMessageJms; import org.hoteia.qalingo.core.mapper.XmlMapper; import org.hoteia.qalingo.core.service.DocumentService; import org.hoteia.qalingo.core.service.OrderPurchaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component(value = "documentQueueListener") public class DocumentQueueListener implements MessageListener, ExceptionListener { protected final Log logger = LogFactory.getLog(getClass()); @Autowired protected XmlMapper xmlMapper; @Autowired protected DocumentService documentService; @Autowired protected OrderPurchaseService orderPurchaseService; /** * Implementation of <code>MessageListener</code>. */ public void onMessage(Message message) { try { if (message instanceof TextMessage) { TextMessage tm = (TextMessage) message; String valueJMSMessage = tm.getText(); if(StringUtils.isNotEmpty(valueJMSMessage)){ final GenerationDocumentMessageJms documentMessageJms = xmlMapper.getXmlMapper().readValue(valueJMSMessage, GenerationDocumentMessageJms.class); final OrderPurchase order = orderPurchaseService.getOrderById(documentMessageJms.getOrderId()); if(documentMessageJms.getDocumentType().equals(OrderDocumentType.ORDER_CONFIRMATION.getPropertyKey())){ documentService.generateOrderConfirmation(order); } else if(documentMessageJms.getDocumentType().equals(OrderDocumentType.SHIPPING_CONFIRMATION.getPropertyKey())){ documentService.generateShippingConfirmation(order); } else if(documentMessageJms.getDocumentType().equals(OrderDocumentType.INVOICE.getPropertyKey())){ documentService.generateInvoice(order); } if (logger.isDebugEnabled()) { logger.debug("Processed message, value: " + valueJMSMessage); } } else { logger.warn("Document generation: Jms Message is empty"); } } } catch (JMSException e) { logger.error(e.getMessage(), e); } catch (IOException e) { logger.error(e.getMessage(), e); } } @Override public void exceptionThrown(Exception e) { logger.debug("Exception on queue listener: " + e.getCause() + ":" + e.getLocalizedMessage()); } }