001    package biz.hammurapi.jms.adapter.converters;
002    
003    import java.io.IOException;
004    import java.io.PrintWriter;
005    import java.io.StringWriter;
006    import java.util.Map;
007    
008    import javax.jms.JMSException;
009    import javax.jms.Message;
010    import javax.jms.Session;
011    import javax.jms.TextMessage;
012    
013    import biz.hammurapi.jms.adapter.Converter;
014    
015    /**
016     * Pass-through converter. Doesn't perform any conversion.
017     * @author Pavel
018     */
019    public class NopConverter implements Converter {
020    
021            /**
022             * Returns message.
023             */
024            public Object convert(Message message, Map properties) throws JMSException {
025                    return message;
026            }
027    
028            /**
029             * Returns object cast to message.
030             */
031            public Message convert(Object obj, Session session, Map properties, Message request)    throws JMSException {
032                    return (Message) obj;
033            }
034    
035            /**
036             * Returns text message with exception stack trace in the body. Correlates by message ID.
037             */
038            public Message convert(Exception e, Session session, Map properties, Message request) throws JMSException {
039                    TextMessage ret = session.createTextMessage();
040                    StringWriter sw = new StringWriter();
041                    PrintWriter pw = new PrintWriter(sw);
042                    e.getCause().printStackTrace(pw);
043                    pw.close();
044                    try {
045                            sw.close();
046                            ret.setText(sw.toString());
047                    } catch (IOException ex) {
048                            ret.setText("Should never happen: "+ex);
049                    }
050                    
051                    if (request!=null) {
052                            ret.setJMSCorrelationID(request.getJMSMessageID());
053                    }
054                    return ret;
055            }
056    
057    }