/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * *************************************************************************************** */ package com.espertech.esperio.regression.adapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import javax.jms.*; import java.io.Serializable; import java.util.HashMap; import java.util.Map; public class SupportJMSSender { private static final Logger log = LoggerFactory.getLogger(SupportJMSSender.class); private AbstractXmlApplicationContext springContext; private JmsTemplate jmsTemplate; public static void main(String[] args) throws JMSException { SupportJMSSender sender = new SupportJMSSender(); //sender.sendSerializable("hello"); Map<String, Object> values = new HashMap<String, Object>(); values.put("prop1", "a"); sender.sendMap(values); sender.destroy(); System.exit(1); } public SupportJMSSender() { springContext = new ClassPathXmlApplicationContext("regression/jms_activemq_spring.xml"); jmsTemplate = (JmsTemplate) springContext.getBean("jmsTemplate"); } public void sendSerializable(Serializable message) { MessageCreator creator = new MyObjectMessageCreator(message); jmsTemplate.send(creator); } public void sendMap(Map<String, Object> message) { MessageCreator creator = new MyMapMessageCreator(message); jmsTemplate.send(creator); } public void destroy() { springContext.destroy(); } private class MyObjectMessageCreator implements MessageCreator { private Serializable msgObject; public MyObjectMessageCreator(Serializable msg) { this.msgObject = msg; } public Message createMessage(Session session) { if (log.isDebugEnabled()) { log.debug(".createMessage Creating object message for object " + msgObject.toString()); } ObjectMessage msg = null; try { msg = session.createObjectMessage(); msg.setObject(msgObject); } catch (JMSException ex) { log.error(".createMessage Error creating object message", ex); } return msg; } } private class MyMapMessageCreator implements MessageCreator { private Map<String, Object> msgObject; public MyMapMessageCreator(Map<String, Object> msg) { this.msgObject = msg; } public Message createMessage(Session session) { if (log.isDebugEnabled()) { log.debug(".createMessage Creating map message for map " + msgObject.toString()); } MapMessage msg = null; try { msg = session.createMapMessage(); for (String key : msgObject.keySet()) { Object val = msgObject.get(key); msg.setObject(key, val); } } catch (JMSException ex) { log.error(".createMessage Error creating map message", ex); } return msg; } } }