INT-1440 the QoS properties are now only applied to JmsTemplate if it is not a referenced bean

This commit is contained in:
Mark Fisher
2010-09-13 15:05:10 -04:00
parent f454378013
commit f7bca5e9ba
2 changed files with 24 additions and 16 deletions

View File

@@ -191,21 +191,13 @@ public abstract class AbstractJmsTemplateBasedAdapter extends IntegrationObjectS
&& (this.destination != null || this.destinationName != null),
"Either a 'jmsTemplate' or *both* 'connectionFactory' and"
+ " 'destination' (or 'destination-name') are required.");
this.jmsTemplate = this.createDefaultJmsTemplate();
this.jmsTemplate = this.createJmsTemplate();
}
this.jmsTemplate.setExplicitQosEnabled(this.explicitQosEnabled);
this.jmsTemplate.setTimeToLive(this.timeToLive);
this.jmsTemplate.setPriority(this.priority);
this.jmsTemplate.setDeliveryMode(this.deliveryMode);
if (this.messageConverter != null) {
this.jmsTemplate.setMessageConverter(this.messageConverter);
}
//this.configureMessageConverter(this.jmsTemplate);
this.initialized = true;
}
}
private JmsTemplate createDefaultJmsTemplate() {
private JmsTemplate createJmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(this.connectionFactory);
if (this.destination != null) {
@@ -218,16 +210,18 @@ public abstract class AbstractJmsTemplateBasedAdapter extends IntegrationObjectS
if (this.destinationResolver != null) {
jmsTemplate.setDestinationResolver(this.destinationResolver);
}
jmsTemplate.setExplicitQosEnabled(this.explicitQosEnabled);
jmsTemplate.setTimeToLive(this.timeToLive);
jmsTemplate.setPriority(this.priority);
jmsTemplate.setDeliveryMode(this.deliveryMode);
if (this.messageConverter != null) {
jmsTemplate.setMessageConverter(this.messageConverter);
}
return jmsTemplate;
}
// protected void configureMessageConverter(JmsTemplate jmsTemplate) {
// MessageConverter converter = jmsTemplate.getMessageConverter();
// if (converter == null) {
// jmsTemplate.setMessageConverter(new SimpleMessageConverter());
// }
// }
protected boolean shouldExtractPayload() {
return extractPayload;
}
}

View File

@@ -101,6 +101,20 @@ public class JmsOutboundChannelAdapterParserTests {
assertEquals(context.getBean("template"), jmsTemplate);
}
@Test
public void adapterWithJmsTemplateQos() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsOutboundWithJmsTemplateQos.xml", this.getClass());
EventDrivenConsumer endpoint = (EventDrivenConsumer) context.getBean("adapter");
DirectFieldAccessor handlerAccessor = new DirectFieldAccessor(new DirectFieldAccessor(endpoint).getPropertyValue("handler"));
JmsTemplate jmsTemplate = (JmsTemplate) handlerAccessor.getPropertyValue("jmsTemplate");
assertNotNull(jmsTemplate);
assertEquals(context.getBean("template"), jmsTemplate);
assertTrue(jmsTemplate.isExplicitQosEnabled());
assertEquals(7, jmsTemplate.getPriority());
assertEquals(12345, jmsTemplate.getTimeToLive());
}
@Test
public void adapterWithMessageConverter() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(