/** * 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.entitycheck.listener; import java.beans.ExceptionListener; import java.io.IOException; import java.util.HashMap; import java.util.Map; 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.mapper.XmlMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.hoteia.qalingo.core.jms.entitycheck.producer.EntityCheckMessageJms; @Component(value = "entityCheckQueueListener") public class EntityCheckQueueListener implements MessageListener, ExceptionListener { protected final Log logger = LogFactory.getLog(getClass()); @Autowired private ApplicationContext context; @Autowired protected XmlMapper xmlMapper; public EntityCheckQueueListener() { } /** * 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 EntityCheckMessageJms documentMessageJms = xmlMapper.getXmlMapper().readValue(valueJMSMessage, EntityCheckMessageJms.class); if (logger.isDebugEnabled()) { logger.debug("Processed message, value: " + valueJMSMessage); } // try { // SpringCamelContext camelContext = (SpringCamelContext) context.getBean("camelContext"); // // if(!camelContext.getRouteStatus("entityCheckRoute").isStarted()){ // camelContext.startRoute("entityCheckRoute"); // } // ProducerTemplate template = context.getBean("camelTemplate", ProducerTemplate.class); // // Map<String, Object> params = new HashMap<String, Object>(); // params.put("id", documentMessageJms.getObjectId()); // params.put("type", documentMessageJms.getObjectType()); // template.asyncSendBody("direct:startEntityCheckRoute", params); // // } catch (Exception e) { // e.printStackTrace(); // } } 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()); } }