Skip to content

Commit 0da1eef

Browse files
committed
Add default ContentTypeResolver initialization
Previously AbstractMessageConverter did not have a ContentTypeResolver configured by default. However the Java config and XML namespace in spring-messaging and spring-websocket always configured one. This change ensures every AbstractMessageConverter is configured with an instance of DefaultContentTypeResolver by default. This makes sense since all the resolver does is make an attempt to find a content type to use for matching. If it can't it returns null and it's up to the converter to decide whether it can convert or not. Issue: SPR-11462
1 parent 801237a commit 0da1eef

File tree

4 files changed

+9
-15
lines changed

4 files changed

+9
-15
lines changed

spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public abstract class AbstractMessageConverter implements MessageConverter {
4646

4747
private final List<MimeType> supportedMimeTypes;
4848

49-
private ContentTypeResolver contentTypeResolver;
49+
private ContentTypeResolver contentTypeResolver = new DefaultContentTypeResolver();
5050

5151
private boolean strictContentTypeMatch = false;
5252

@@ -83,10 +83,12 @@ public List<MimeType> getSupportedMimeTypes() {
8383
* Configure the {@link ContentTypeResolver} to use to resolve the content
8484
* type of an input message.
8585
* <p>
86-
* By default, no {@code ContentTypeResolver} is configured. When a resolver
87-
* is not configured, then {@link #setStrictContentTypeMatch(boolean)} should
88-
* be left {@code false} (the default) or otherwise this converter will ignore
89-
* all input messages.
86+
* Note that if no resolver is configured, then
87+
* {@link #setStrictContentTypeMatch(boolean) strictContentTypeMatch} should
88+
* be left as {@code false} (the default) or otherwise this converter will
89+
* ignore all messages.
90+
* <p>
91+
* By default, a {@code DefaultContentTypeResolver} instance is used.
9092
*/
9193
public void setContentTypeResolver(ContentTypeResolver resolver) {
9294
this.contentTypeResolver = resolver;

spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2013 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -46,7 +46,6 @@ public class MappingJackson2MessageConverterTests {
4646
@Before
4747
public void setup() {
4848
this.converter = new MappingJackson2MessageConverter();
49-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
5049
}
5150

5251
@Test

spring-messaging/src/test/java/org/springframework/messaging/converter/MessageConverterTests.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public class MessageConverterTests {
4646
@Before
4747
public void setup() {
4848
this.converter = new TestMessageConverter();
49-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
5049
}
5150

5251
@Test
@@ -81,20 +80,16 @@ public void supportsMimeTypeNotSpecified() {
8180

8281
@Test
8382
public void supportsMimeTypeNoneConfigured() {
84-
8583
Message<String> message = MessageBuilder.withPayload(
8684
"ABC").setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON).build();
87-
8885
this.converter = new TestMessageConverter(Collections.<MimeType>emptyList());
89-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
9086

9187
assertEquals("success-from", this.converter.fromMessage(message, String.class));
9288
}
9389

9490
@Test
9591
public void canConvertFromStrictContentTypeMatch() {
9692
this.converter = new TestMessageConverter(Arrays.asList(MimeTypeUtils.TEXT_PLAIN));
97-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
9893
this.converter.setStrictContentTypeMatch(true);
9994

10095
Message<String> message = MessageBuilder.withPayload("ABC").build();
@@ -110,7 +105,6 @@ public void canConvertFromStrictContentTypeMatch() {
110105
public void setStrictContentTypeMatchWithNoSupportedMimeTypes() {
111106
Message<String> message = MessageBuilder.withPayload("ABC").build();
112107
this.converter = new TestMessageConverter(Collections.<MimeType>emptyList());
113-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
114108
this.converter.setStrictContentTypeMatch(true);
115109
}
116110

spring-messaging/src/test/java/org/springframework/messaging/converter/StringMessageConverterTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2013 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -43,7 +43,6 @@ public class StringMessageConverterTests {
4343
@Before
4444
public void setUp() {
4545
this.converter = new StringMessageConverter();
46-
this.converter.setContentTypeResolver(new DefaultContentTypeResolver());
4746
}
4847

4948

0 commit comments

Comments
 (0)