Add null check after message conversion

AbstractMessageSendingTemplate now checks if MessageConverter.toMessage
returns null and raises an exception.

Issue: SPR-11370
This commit is contained in:
Rossen Stoyanchev
2014-01-31 21:34:18 -05:00
parent f0a53ae54e
commit da369aa826
5 changed files with 51 additions and 5 deletions

View File

@@ -16,14 +16,20 @@
package org.springframework.messaging.core;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.converter.*;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
import static org.junit.Assert.*;
@@ -45,7 +51,8 @@ public class MessageSendingTemplateTests {
public void setup() {
this.template = new TestMessageSendingTemplate();
this.postProcessor = new TestMessagePostProcessor();
this.headers = Collections.<String, Object>singletonMap("key", "value");
this.headers = new HashMap<>();
this.headers.put("key", "value");
}
@Test
@@ -144,6 +151,17 @@ public class MessageSendingTemplateTests {
assertSame(this.template.message, this.postProcessor.getMessage());
}
@Test(expected = MessageConversionException.class)
public void convertAndSendNoMatchingConverter() {
MessageConverter converter = new CompositeMessageConverter(
Arrays.asList(new MappingJackson2MessageConverter()), new DefaultContentTypeResolver());
this.template.setMessageConverter(converter);
this.headers.put(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_XML);
this.template.convertAndSend("home", "payload", new MessageHeaders(this.headers));
}
private static class TestMessageSendingTemplate extends AbstractMessageSendingTemplate<String> {