Fine-tune default mime type in message broker config
Issue: SPR-11370
This commit is contained in:
@@ -248,27 +248,44 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC
|
||||
|
||||
@Bean
|
||||
public CompositeMessageConverter brokerMessageConverter() {
|
||||
|
||||
List<MessageConverter> converters = new ArrayList<MessageConverter>();
|
||||
if (configureMessageConverters(converters)) {
|
||||
boolean registerDefaults = configureMessageConverters(converters);
|
||||
if (registerDefaults) {
|
||||
if (jackson2Present) {
|
||||
converters.add(new MappingJackson2MessageConverter());
|
||||
}
|
||||
converters.add(new StringMessageConverter());
|
||||
converters.add(new ByteArrayMessageConverter());
|
||||
}
|
||||
return new CompositeMessageConverter(converters, getContentTypeResolver());
|
||||
|
||||
ContentTypeResolver contentTypeResolver = getContentTypeResolver();
|
||||
if (contentTypeResolver == null) {
|
||||
contentTypeResolver = new DefaultContentTypeResolver();
|
||||
if (jackson2Present && registerDefaults) {
|
||||
((DefaultContentTypeResolver) contentTypeResolver).setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
|
||||
}
|
||||
}
|
||||
|
||||
return new CompositeMessageConverter(converters, contentTypeResolver);
|
||||
}
|
||||
|
||||
/**
|
||||
* Override this method to add custom message converters.
|
||||
* @param messageConverters the list to add converters to, initially empty
|
||||
*
|
||||
* @return {@code true} if default message converters should be added to list,
|
||||
* {@code false} if no more converters should be added.
|
||||
*/
|
||||
protected boolean configureMessageConverters(List<MessageConverter> messageConverters) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override this method to provide a custom {@link ContentTypeResolver}.
|
||||
*/
|
||||
protected ContentTypeResolver getContentTypeResolver() {
|
||||
DefaultContentTypeResolver contentTypeResolver = new DefaultContentTypeResolver();
|
||||
if (jackson2Present) {
|
||||
contentTypeResolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
|
||||
}
|
||||
return contentTypeResolver;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -270,15 +270,6 @@ public class MessageBrokerConfigurationTests {
|
||||
assertEquals(33, taskExecutor.getKeepAliveSeconds());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void messageConverter() {
|
||||
CompositeMessageConverter messageConverter = this.brokerRelayContext.getBean(
|
||||
"brokerMessageConverter", CompositeMessageConverter.class);
|
||||
|
||||
DefaultContentTypeResolver resolver = (DefaultContentTypeResolver) messageConverter.getContentTypeResolver();
|
||||
assertEquals(MimeTypeUtils.APPLICATION_JSON, resolver.getDefaultMimeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configureMessageConvertersDefault() {
|
||||
AbstractMessageBrokerConfiguration config = new AbstractMessageBrokerConfiguration() {};
|
||||
@@ -289,6 +280,9 @@ public class MessageBrokerConfigurationTests {
|
||||
assertThat(iterator.next(), Matchers.instanceOf(MappingJackson2MessageConverter.class));
|
||||
assertThat(iterator.next(), Matchers.instanceOf(StringMessageConverter.class));
|
||||
assertThat(iterator.next(), Matchers.instanceOf(ByteArrayMessageConverter.class));
|
||||
|
||||
DefaultContentTypeResolver resolver = (DefaultContentTypeResolver) compositeConverter.getContentTypeResolver();
|
||||
assertEquals(MimeTypeUtils.APPLICATION_JSON, resolver.getDefaultMimeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -301,11 +295,14 @@ public class MessageBrokerConfigurationTests {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
CompositeMessageConverter compositeConverter = config.brokerMessageConverter();
|
||||
|
||||
CompositeMessageConverter compositeConverter = config.brokerMessageConverter();
|
||||
assertThat(compositeConverter.getConverters().size(), Matchers.is(1));
|
||||
Iterator<MessageConverter> iterator = compositeConverter.getConverters().iterator();
|
||||
assertThat(iterator.next(), Matchers.is(testConverter));
|
||||
|
||||
DefaultContentTypeResolver resolver = (DefaultContentTypeResolver) compositeConverter.getContentTypeResolver();
|
||||
assertNull(resolver.getDefaultMimeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -328,6 +325,9 @@ public class MessageBrokerConfigurationTests {
|
||||
assertThat(iterator.next(), Matchers.instanceOf(MappingJackson2MessageConverter.class));
|
||||
assertThat(iterator.next(), Matchers.instanceOf(StringMessageConverter.class));
|
||||
assertThat(iterator.next(), Matchers.instanceOf(ByteArrayMessageConverter.class));
|
||||
|
||||
DefaultContentTypeResolver resolver = (DefaultContentTypeResolver) compositeConverter.getContentTypeResolver();
|
||||
assertEquals(MimeTypeUtils.APPLICATION_JSON, resolver.getDefaultMimeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user