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 }