Browse Source

Consistently introspect constructor-provided JmsTemplate

See gh-32501
pull/35163/head
Juergen Hoeller 6 months ago
parent
commit
0111329214
  1. 25
      spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java
  2. 4
      spring-jms/src/test/java/org/springframework/jms/core/JmsClientTests.java
  3. 5
      spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java

25
spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java

@ -59,7 +59,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination> @@ -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> @@ -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,23 +80,27 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination> @@ -79,23 +80,27 @@ 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 JmsOperations} to use.
* @since 7.0
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
*/
public JmsMessagingTemplate(JmsOperations jmsTemplate) {
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
Assert.notNull(jmsTemplate, "JmsTemplate must not be null");
this.jmsTemplate = jmsTemplate;
this.jmsMessageConverter = new MessagingMessageConverter(jmsTemplate.getMessageConverter());
}
/**
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsOperations} to use.
* @since 7.0
*/
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
this((JmsOperations) jmsTemplate);
public JmsMessagingTemplate(JmsOperations jmsTemplate) {
Assert.notNull(jmsTemplate, "JmsTemplate must not be null");
this.jmsTemplate = jmsTemplate;
this.jmsMessageConverter = (jmsTemplate instanceof JmsTemplate template ?
new MessagingMessageConverter(template.getMessageConverter()) : new MessagingMessageConverter());
}
@ -104,8 +109,10 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination> @@ -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);

4
spring-jms/src/test/java/org/springframework/jms/core/JmsClientTests.java

@ -42,6 +42,7 @@ import org.mockito.stubbing.Answer; @@ -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 { @@ -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 { @@ -78,6 +79,7 @@ class JmsClientTests {
@BeforeEach
void setup() {
given(this.jmsTemplate.getMessageConverter()).willReturn(new SimpleMessageConverter());
this.jmsClient = JmsClient.create(this.jmsTemplate);
}

5
spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java

@ -80,6 +80,7 @@ class JmsMessagingTemplateTests { @@ -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 { @@ -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 { @@ -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");

Loading…
Cancel
Save