From f7bca5e9ba33ab5bc4e02ed321032195e58b3831 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 13 Sep 2010 15:05:10 -0400 Subject: [PATCH] INT-1440 the QoS properties are now only applied to JmsTemplate if it is not a referenced bean --- .../jms/AbstractJmsTemplateBasedAdapter.java | 26 +++++++------------ .../JmsOutboundChannelAdapterParserTests.java | 14 ++++++++++ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java index 2e1ede4682..f15440ce3e 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java @@ -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; } + } diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java index 912c02f04e..40be26a252 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java @@ -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(