Consistently introspect constructor-provided JmsTemplate

See gh-32501
This commit is contained in:
Juergen Hoeller
2025-07-04 21:50:20 +02:00
parent 8cb901825b
commit 0111329214
3 changed files with 21 additions and 15 deletions
@@ -59,7 +59,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
private @Nullable JmsOperations jmsTemplate;
private MessageConverter jmsMessageConverter = new MessagingMessageConverter();
private MessageConverter jmsMessageConverter;
private boolean converterSet;
@@ -71,6 +71,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
* Requires {@link #setConnectionFactory} or {@link #setJmsTemplate} to be called.
*/
public JmsMessagingTemplate() {
this.jmsMessageConverter = new MessagingMessageConverter();
}
/**
@@ -79,7 +80,16 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
* @since 4.1.2
*/
public JmsMessagingTemplate(ConnectionFactory connectionFactory) {
this.jmsTemplate = new JmsTemplate(connectionFactory);
this(new JmsTemplate(connectionFactory));
}
/**
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
*/
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
Assert.notNull(jmsTemplate, "JmsTemplate must not be null");
this.jmsTemplate = jmsTemplate;
this.jmsMessageConverter = new MessagingMessageConverter(jmsTemplate.getMessageConverter());
}
/**
@@ -89,13 +99,8 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
public JmsMessagingTemplate(JmsOperations jmsTemplate) {
Assert.notNull(jmsTemplate, "JmsTemplate must not be null");
this.jmsTemplate = jmsTemplate;
}
/**
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
*/
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
this((JmsOperations) jmsTemplate);
this.jmsMessageConverter = (jmsTemplate instanceof JmsTemplate template ?
new MessagingMessageConverter(template.getMessageConverter()) : new MessagingMessageConverter());
}
@@ -104,8 +109,10 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
* @since 4.1.2
*/
public void setConnectionFactory(ConnectionFactory connectionFactory) {
if (this.jmsTemplate instanceof JmsAccessor template) {
if (this.jmsTemplate instanceof JmsAccessor accessor) {
JmsTemplate template = new JmsTemplate(accessor);
template.setConnectionFactory(connectionFactory);
this.jmsTemplate = template;
}
else {
this.jmsTemplate = new JmsTemplate(connectionFactory);
@@ -42,6 +42,7 @@ import org.mockito.stubbing.Answer;
import org.springframework.jms.InvalidDestinationException;
import org.springframework.jms.MessageNotReadableException;
import org.springframework.jms.StubTextMessage;
import org.springframework.jms.support.converter.SimpleMessageConverter;
import org.springframework.jms.support.destination.DestinationResolutionException;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessagingException;
@@ -70,7 +71,7 @@ class JmsClientTests {
@Captor
private ArgumentCaptor<MessageCreator> messageCreator;
@Mock
@Mock(strictness = Mock.Strictness.LENIENT)
private JmsTemplate jmsTemplate;
private JmsClient jmsClient;
@@ -78,6 +79,7 @@ class JmsClientTests {
@BeforeEach
void setup() {
given(this.jmsTemplate.getMessageConverter()).willReturn(new SimpleMessageConverter());
this.jmsClient = JmsClient.create(this.jmsTemplate);
}
@@ -80,6 +80,7 @@ class JmsMessagingTemplateTests {
@BeforeEach
void setup() {
given(this.jmsTemplate.getMessageConverter()).willReturn(new SimpleMessageConverter());
this.messagingTemplate = new JmsMessagingTemplate(this.jmsTemplate);
}
@@ -93,7 +94,6 @@ class JmsMessagingTemplateTests {
MessageConverter messageConverter = mock();
given(this.jmsTemplate.getMessageConverter()).willReturn(messageConverter);
JmsMessagingTemplate messagingTemplate = new JmsMessagingTemplate(this.jmsTemplate);
messagingTemplate.afterPropertiesSet();
assertPayloadConverter(messagingTemplate, messageConverter);
}
@@ -174,9 +174,6 @@ class JmsMessagingTemplateTests {
@Test
void sendPropertyInjection() {
MessageConverter messageConverter = new SimpleMessageConverter();
given(this.jmsTemplate.getMessageConverter()).willReturn(messageConverter);
this.messagingTemplate = new JmsMessagingTemplate();
this.messagingTemplate.setJmsTemplate(this.jmsTemplate);
this.messagingTemplate.setDefaultDestinationName("myQueue");