All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.marketcetera.client.jms.JMSMessageConverter Maven / Gradle / Ivy

There is a newer version: 3.2.1
Show newest version
package org.marketcetera.client.jms;

import java.io.Serializable;

import javax.jms.ObjectMessage;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.marketcetera.util.log.I18NBoundMessage1P;
import org.marketcetera.util.log.SLF4JLoggerProxy;
import org.marketcetera.util.misc.ClassVersion;
import org.marketcetera.trade.*;

import org.springframework.jms.support.converter.MessageConversionException;
import org.springframework.jms.support.converter.MessageConverter;
import org.apache.commons.lang.ObjectUtils;

/* $License$ */
/**
 * Converts trading messages to be able to send them over JMS.
 * This class is not meant to be used by clients of this package.
 *
 * @author [email protected]
 * @version $Id: JMSMessageConverter.java 16154 2012-07-14 16:34:05Z colin $
 * @since 1.0.0
 */
@ClassVersion("$Id: JMSMessageConverter.java 16154 2012-07-14 16:34:05Z colin $")
public class JMSMessageConverter implements MessageConverter {

    /**
     * Converts a JMS Message to a trade message.
     *
     * @param message the received JMS message. It should be of type
     * {@link ObjectMessage}.
     *
     * @return the trade message converted from the supplied JMS message.
     *
     * @throws JMSException if there were errors extracting the contents
     * of the JMS message.
     * @throws MessageConversionException if there were errors converting
     * the contents of the JMS message to a trade message.
     */
    @Override
    public Object fromMessage(Message message)
            throws JMSException, MessageConversionException {
        SLF4JLoggerProxy.debug(this, "Converting from JMS {}", message);  //$NON-NLS-1$
        if(message instanceof ObjectMessage) {
            Serializable object = ((ObjectMessage) message).getObject();
            if(object instanceof TradeMessage) {
                return object;
            } else {
                throw new MessageConversionException(new I18NBoundMessage1P(
                        Messages.UNEXPECTED_MESSAGE_RECEIVED,
                        ObjectUtils.toString(object)).getText());
            }
        } else {
            throw new MessageConversionException(new I18NBoundMessage1P(
                    Messages.UNEXPECTED_MESSAGE_RECEIVED,
                    ObjectUtils.toString(message)).getText());
        }
	}

    /**
     * Converts a trade message to a JMS Message.
     *
     * @param inObject the message to be converted. It should either be
     * an order or a report.
     * @param session the JMS Session instance.
     *
     * @return the JMS message.
     *
     * @throws JMSException if there were errors serializing the
     * trade message.
     * @throws MessageConversionException if the supplied object was not
     * an acceptable trade message.
     */
    @Override
    public Message toMessage(Object inObject, Session session)
            throws JMSException, MessageConversionException {
        SLF4JLoggerProxy.debug(this, "Converting to JMS {}", inObject);  //$NON-NLS-1$
        if (inObject instanceof TradeMessage) {
            return session.createObjectMessage((Serializable) inObject);
        } else {
            throw new MessageConversionException(new I18NBoundMessage1P(
                    Messages.UNEXPECTED_MESSAGE_TO_SEND,
                    ObjectUtils.toString(inObject)).getText());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy