Reuse JmsTemplate's MessageConverter in JmsMessagingTemplate
This commit makes sure that any custom MessageConverter set in a
JmsTemplate used by a JmsMessagingTemplate is reused as the payload
converter of the message.
Issue: SPR-15965
(cherry picked from commit b275a06)
This commit is contained in:
committed by
Juergen Hoeller
parent
5e904ddcaa
commit
35af7ff854
@@ -50,6 +50,8 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
|
||||
private MessageConverter jmsMessageConverter = new MessagingMessageConverter();
|
||||
|
||||
private boolean converterSet;
|
||||
|
||||
private String defaultDestinationName;
|
||||
|
||||
|
||||
@@ -126,6 +128,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
|
||||
Assert.notNull(jmsMessageConverter, "MessageConverter must not be null");
|
||||
this.jmsMessageConverter = jmsMessageConverter;
|
||||
this.converterSet = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,7 +158,11 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
Assert.notNull(getJmsTemplate(), "Property 'connectionFactory' or 'jmsTemplate' is required");
|
||||
Assert.notNull(this.jmsTemplate, "Property 'connectionFactory' or 'jmsTemplate' is required");
|
||||
if (!this.converterSet && this.jmsTemplate.getMessageConverter() != null) {
|
||||
((MessagingMessageConverter) this.jmsMessageConverter)
|
||||
.setPayloadConverter(this.jmsTemplate.getMessageConverter());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -54,6 +54,15 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
|
||||
this(new SimpleMessageConverter(), new SimpleJmsHeaderMapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance with the specific payload converter.
|
||||
* @param payloadConverter the payload converter to use
|
||||
* @since 4.3.12
|
||||
*/
|
||||
public MessagingMessageConverter(MessageConverter payloadConverter) {
|
||||
this(payloadConverter, new SimpleJmsHeaderMapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance with the specified payload converter and
|
||||
* header mapper.
|
||||
|
||||
Reference in New Issue
Block a user