// Path: jms-base/src/main/java/me/chanjar/jms/base/utils/MessageConvertUtils.java
// public abstract class MessageConvertUtils {
// 
//   private MessageConvertUtils() {
//     // singleton
//   }
// 
//   /**
//    * 把对象转换成{@link Message}
//    *
//    * @param jmsTemplate
//    * @param session
//    * @param payload
//    * @return
//    * @throws JMSException
//    */
//   public static Message toMessage(JmsTemplate jmsTemplate, Session session, Object payload) throws JMSException {
//     return toMessage(jmsTemplate.getMessageConverter(), session, payload);
//   }
// 
//   /**
//    * 把对象转换成{@link Message}
//    *
//    * @param messageConverter
//    * @param session
//    * @param payload
//    * @return
//    * @throws JMSException
//    */
//   public static Message toMessage(MessageConverter messageConverter, Session session, Object payload)
//       throws JMSException {
//     return messageConverter.toMessage(payload, session);
//   }
// 
//   /**
//    * 把{@link Message}转换成对象
//    *
//    * @param jmsTemplate
//    * @param message
//    * @param <T>
//    * @return
//    * @throws JMSException
//    */
//   public static <T> T fromMessage(JmsTemplate jmsTemplate, Message message) throws JMSException {
//     return fromMessage(jmsTemplate.getMessageConverter(), message);
//   }
// 
//   /**
//    * 把{@link Message}转换成对象
//    *
//    * @param messageConverter
//    * @param message
//    * @param <T>
//    * @return
//    * @throws JMSException
//    */
//   public static <T> T fromMessage(MessageConverter messageConverter, Message message) throws JMSException {
//     return (T) messageConverter.fromMessage(message);
//   }
// 
// }
// 
// Path: jms-msg/src/main/java/me/chanjar/jms/msg/RequestDto.java
// public class RequestDto extends MessageDto {
// 
//   private static final long serialVersionUID = 5515305970509119810L;
//   /**
//    * 商品ID
//    */
//   private final Long itemId;
// 
//   /**
//    * 用户ID
//    */
//   private final String userId;
// 
//   public RequestDto(Long itemId, String userId) {
//     super();
//     this.itemId = itemId;
//     this.userId = userId;
//   }
// 
//   public Long getItemId() {
//     return itemId;
//   }
// 
//   public String getUserId() {
//     return userId;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
// 
//     RequestDto that = (RequestDto) o;
// 
//     if (itemId != null ? !itemId.equals(that.itemId) : that.itemId != null) return false;
//     return userId != null ? userId.equals(that.userId) : that.userId == null;
//   }
// 
//   @Override
//   public int hashCode() {
//     int result = itemId != null ? itemId.hashCode() : 0;
//     result = 31 * result + (userId != null ? userId.hashCode() : 0);
//     return result;
//   }
// 
//   @Override
//   public String toString() {
//     return new ToStringBuilder(this)
//         .append("id", id)
//         .append("itemId", itemId)
//         .append("userId", userId)
//         .toString();
//   }
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/request/RequestDtoEventProducer.java
// public class RequestDtoEventProducer {
// 
//   private static final EventTranslatorOneArg<RequestDtoEvent, RequestDto> TRANSLATOR =
//       (event, sequence, requestDto) -> event.setRequestDto(requestDto);
// 
//   private final RingBuffer<RequestDtoEvent> ringBuffer;
// 
//   public RequestDtoEventProducer(RingBuffer<RequestDtoEvent> ringBuffer) {
//     this.ringBuffer = ringBuffer;
//   }
// 
//   public void onData(RequestDto requestDto) {
//     ringBuffer.publishEvent(TRANSLATOR, requestDto);
//   }
// 
// }


import me.chanjar.jms.base.utils.MessageConvertUtils;
import me.chanjar.jms.msg.RequestDto;
import me.chanjar.jms.server.request.RequestDtoEventProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.jms.support.converter.SimpleMessageConverter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
package me.chanjar.jms.server;



public class RequestDtoListener implements MessageListener {

  private static final Logger LOGGER = LoggerFactory.getLogger(RequestDtoListener.class);

  private RequestDtoEventProducer requestDtoEventProducer;

  private MessageConverter messageConverter = new SimpleMessageConverter();

  @Override
  public void onMessage(Message message) {
    if (!(message instanceof ObjectMessage)) {
      LOGGER.error("Not ObjectMessage but actually {}", message.getClass().getSimpleName());
      return;
    }
    try {
      RequestDto requestDto = MessageConvertUtils.fromMessage(messageConverter, message);
      requestDtoEventProducer.onData(requestDto);
    } catch (JMSException e) {
// Path: jms-base/src/main/java/me/chanjar/jms/base/utils/MessageConvertUtils.java
// public abstract class MessageConvertUtils {
// 
//   private MessageConvertUtils() {
//     // singleton
//   }
// 
//   /**
//    * 把对象转换成{@link Message}
//    *
//    * @param jmsTemplate
//    * @param session
//    * @param payload
//    * @return
//    * @throws JMSException
//    */
//   public static Message toMessage(JmsTemplate jmsTemplate, Session session, Object payload) throws JMSException {
//     return toMessage(jmsTemplate.getMessageConverter(), session, payload);
//   }
// 
//   /**
//    * 把对象转换成{@link Message}
//    *
//    * @param messageConverter
//    * @param session
//    * @param payload
//    * @return
//    * @throws JMSException
//    */
//   public static Message toMessage(MessageConverter messageConverter, Session session, Object payload)
//       throws JMSException {
//     return messageConverter.toMessage(payload, session);
//   }
// 
//   /**
//    * 把{@link Message}转换成对象
//    *
//    * @param jmsTemplate
//    * @param message
//    * @param <T>
//    * @return
//    * @throws JMSException
//    */
//   public static <T> T fromMessage(JmsTemplate jmsTemplate, Message message) throws JMSException {
//     return fromMessage(jmsTemplate.getMessageConverter(), message);
//   }
// 
//   /**
//    * 把{@link Message}转换成对象
//    *
//    * @param messageConverter
//    * @param message
//    * @param <T>
//    * @return
//    * @throws JMSException
//    */
//   public static <T> T fromMessage(MessageConverter messageConverter, Message message) throws JMSException {
//     return (T) messageConverter.fromMessage(message);
//   }
// 
// }
// 
// Path: jms-msg/src/main/java/me/chanjar/jms/msg/RequestDto.java
// public class RequestDto extends MessageDto {
// 
//   private static final long serialVersionUID = 5515305970509119810L;
//   /**
//    * 商品ID
//    */
//   private final Long itemId;
// 
//   /**
//    * 用户ID
//    */
//   private final String userId;
// 
//   public RequestDto(Long itemId, String userId) {
//     super();
//     this.itemId = itemId;
//     this.userId = userId;
//   }
// 
//   public Long getItemId() {
//     return itemId;
//   }
// 
//   public String getUserId() {
//     return userId;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
// 
//     RequestDto that = (RequestDto) o;
// 
//     if (itemId != null ? !itemId.equals(that.itemId) : that.itemId != null) return false;
//     return userId != null ? userId.equals(that.userId) : that.userId == null;
//   }
// 
//   @Override
//   public int hashCode() {
//     int result = itemId != null ? itemId.hashCode() : 0;
//     result = 31 * result + (userId != null ? userId.hashCode() : 0);
//     return result;
//   }
// 
//   @Override
//   public String toString() {
//     return new ToStringBuilder(this)
//         .append("id", id)
//         .append("itemId", itemId)
//         .append("userId", userId)
//         .toString();
//   }
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/request/RequestDtoEventProducer.java
// public class RequestDtoEventProducer {
// 
//   private static final EventTranslatorOneArg<RequestDtoEvent, RequestDto> TRANSLATOR =
//       (event, sequence, requestDto) -> event.setRequestDto(requestDto);
// 
//   private final RingBuffer<RequestDtoEvent> ringBuffer;
// 
//   public RequestDtoEventProducer(RingBuffer<RequestDtoEvent> ringBuffer) {
//     this.ringBuffer = ringBuffer;
//   }
// 
//   public void onData(RequestDto requestDto) {
//     ringBuffer.publishEvent(TRANSLATOR, requestDto);
//   }
// 
// }


// Path: jms-server/src/main/java/me/chanjar/jms/server/RequestDtoListener.java
import me.chanjar.jms.base.utils.MessageConvertUtils;
import me.chanjar.jms.msg.RequestDto;
import me.chanjar.jms.server.request.RequestDtoEventProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.jms.support.converter.SimpleMessageConverter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;

package me.chanjar.jms.server;



public class RequestDtoListener implements MessageListener {

  private static final Logger LOGGER = LoggerFactory.getLogger(RequestDtoListener.class);

  private RequestDtoEventProducer requestDtoEventProducer;

  private MessageConverter messageConverter = new SimpleMessageConverter();

  @Override
  public void onMessage(Message message) {
    if (!(message instanceof ObjectMessage)) {
      LOGGER.error("Not ObjectMessage but actually {}", message.getClass().getSimpleName());
      return;
    }
    try {
      RequestDto requestDto = MessageConvertUtils.fromMessage(messageConverter, message);
      requestDtoEventProducer.onData(requestDto);
    } catch (JMSException e) {
      LOGGER.error("Error when onMessage", e);