Factored out the MessageListener implementation into a separate inner class.

This commit is contained in:
Mark Fisher
2008-11-13 21:37:26 +00:00
parent e2e98d8c2c
commit 6a77b2b642

View File

@@ -29,7 +29,6 @@ import org.springframework.integration.gateway.SimpleMessagingGateway;
import org.springframework.jms.listener.AbstractMessageListenerContainer;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
import org.springframework.jms.listener.SessionAwareMessageListener;
import org.springframework.jms.listener.adapter.MessageListenerAdapter;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.util.Assert;
@@ -167,23 +166,7 @@ public class JmsInboundGateway extends SimpleMessagingGateway implements Disposa
hmmc.setExtractReplyPayload(this.extractReplyPayload);
this.messageConverter = hmmc;
}
MessageListenerAdapter listener = new MessageListenerAdapter();
listener.setDelegate(new SessionAwareMessageListener() {
public void onMessage(javax.jms.Message jmsMessage, Session session) throws JMSException {
Object object = messageConverter.fromMessage(jmsMessage);
Message<?> replyMessage = JmsInboundGateway.this.sendAndReceiveMessage(object);
if (replyMessage != null) {
javax.jms.Message jmsReply = messageConverter.toMessage(replyMessage, session);
if (jmsReply.getJMSCorrelationID() == null) {
jmsReply.setJMSCorrelationID(jmsMessage.getJMSMessageID());
}
MessageProducer producer = session.createProducer(jmsMessage.getJMSReplyTo());
producer.send(jmsMessage.getJMSReplyTo(), jmsReply);
}
}
});
listener.setMessageConverter(this.messageConverter);
this.container.setMessageListener(listener);
this.container.setMessageListener(new GatewayInvokingMessageListener());
if (!this.container.isActive()) {
this.container.afterPropertiesSet();
}
@@ -241,4 +224,21 @@ public class JmsInboundGateway extends SimpleMessagingGateway implements Disposa
}
}
private class GatewayInvokingMessageListener implements SessionAwareMessageListener {
public void onMessage(javax.jms.Message jmsMessage, Session session) throws JMSException {
Object object = messageConverter.fromMessage(jmsMessage);
Message<?> replyMessage = JmsInboundGateway.this.sendAndReceiveMessage(object);
if (replyMessage != null) {
javax.jms.Message jmsReply = messageConverter.toMessage(replyMessage, session);
if (jmsReply.getJMSCorrelationID() == null) {
jmsReply.setJMSCorrelationID(jmsMessage.getJMSMessageID());
}
MessageProducer producer = session.createProducer(jmsMessage.getJMSReplyTo());
producer.send(jmsMessage.getJMSReplyTo(), jmsReply);
}
}
}
}