001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.jms.adapter.converters; 005 006 import java.io.Serializable; 007 import java.util.Map; 008 009 import javax.jms.Message; 010 import javax.jms.ObjectMessage; 011 import javax.jms.Session; 012 013 import biz.hammurapi.jms.adapter.Converter; 014 015 /** 016 * Reads and writes objects from/to ObjectMessage. 017 * @author Tatyana Konukova 018 * 019 */ 020 public abstract class ObjectMessageConverter implements Converter { 021 022 023 /** 024 * Reads object from ObjectMessage. If is-error boolean property is true then 025 * return object gets cast to Exception and thrown. 026 */ 027 public Object convert(Message message, Map properties) throws Exception { 028 Serializable ret = ((ObjectMessage) message).getObject(); 029 if (message.getBooleanProperty("is-error")) { 030 throw (Exception) ret; 031 } 032 return ret; 033 } 034 035 /** 036 * Writes Object to ObjectMessage. Object shall be serializable. 037 * Correlates by message ID. 038 */ 039 public Message convert(Object obj, Session session, Map properties, Message request) throws Exception { 040 ObjectMessage ret = session.createObjectMessage(); 041 ret.setObject((Serializable) obj); 042 if (request!=null) { 043 ret.setJMSCorrelationID(request.getJMSMessageID()); 044 } 045 return ret; 046 } 047 048 /** 049 * Writes Exception to ObjectMessage. Exception shall be serializable. 050 * Boolean property is-error is set to true to indicate that payload is exception. 051 * Correlates by message ID. 052 */ 053 public Message convert(Exception ex, Session session, Map properties, Message request) throws Exception { 054 ObjectMessage ret = session.createObjectMessage(); 055 ret.setObject((Serializable) ex); 056 ret.setBooleanProperty("is-error", true); 057 if (request!=null) { 058 ret.setJMSCorrelationID(request.getJMSMessageID()); 059 } 060 return ret; 061 } 062 063 }