001    package biz.hammurapi.jms.adapter;
002    
003    import java.util.Map;
004    
005    import javax.jms.Message;
006    import javax.jms.Session;
007    
008    /**
009     * Binding components shall implement this interface.
010     * @author Pavel
011     */
012    public interface Converter {
013    
014            /**
015             * Converts message to Object.
016             * @param message Source message
017             * @param properties Configuration properties
018             * @return Object created from message data 
019             */
020            Object convert(Message message, Map properties) throws Exception;
021            
022            /**
023             * Creates message and populates it from object.
024             * @param obj Source object
025             * @param session Session to create message
026             * @param properties Configuration properties
027             * @param request Request message, can be null.
028             * @return Populated and ready to send message
029             */
030            Message convert(Object obj, Session session, Map properties, Message request) throws Exception;
031            
032            /**
033             * Creates message and populates it from exception to send it over JMS.
034             * @param obj Exception
035             * @param session Session to create message
036             * @param properties Configuration properties
037             * @param request Request message, can be null.
038             * @return Populated and ready to send message
039             */
040            Message convert(Exception e, Session session, Map properties, Message request) throws Exception;
041            
042    }