package com.mossle.simulator.jms;
import java.util.UUID;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ProxyMessageConsumer implements MessageConsumer {
private static Logger logger = LoggerFactory
.getLogger(ProxyMessageConsumer.class);
private ProxySession proxySession;
private Destination destination;
private String id;
public ProxyMessageConsumer(ProxySession proxySession) {
this.proxySession = proxySession;
this.id = UUID.randomUUID().toString();
this.proxySession.onConsumerConnect();
}
public String getMessageSelector() throws JMSException {
return null;
}
public MessageListener getMessageListener() throws JMSException {
return null;
}
public void setMessageListener(MessageListener listener)
throws JMSException {
throw new UnsupportedOperationException("setMessageListener("
+ listener + ")");
}
public Message receive() throws JMSException {
return receive(100L);
}
public Message receive(long timeout) throws JMSException {
try {
Thread.sleep(timeout);
} catch (InterruptedException ex) {
logger.warn(ex.getMessage(), ex);
JMSException jmsException = new JMSException(ex.getMessage());
jmsException.setLinkedException(ex);
throw jmsException;
}
return getMessage();
}
public Message receiveNoWait() throws JMSException {
return receive(100L);
}
public void close() throws JMSException {
proxySession.removeMessageConsumer(this);
proxySession.onConsumerDisconnect();
}
// ~ ==================================================
public String getId() {
return id;
}
public Destination getDestination() {
return destination;
}
public void setDestination(Destination destination) {
this.destination = destination;
}
public Message getMessage() throws JMSException {
return this.proxySession.getMessage(this);
}
}