Changes BusJacksonMessageConverter to have single constructor.

This allows Spring to managed injection of ObjectMapper in all cases. This avoids early initialization problems if a List<MessageConverter> is injected somewhere.

fixes gh-202
This commit is contained in:
Spencer Gibb
2019-07-31 11:18:25 -04:00
parent 494511c37f
commit 2b97e82fe2
3 changed files with 7 additions and 13 deletions

View File

@@ -25,7 +25,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -69,7 +68,6 @@ public class BusJacksonIntegrationTests {
@Test
@SuppressWarnings("unchecked")
@Ignore // FIXME: https://github.com/spring-cloud/spring-cloud-bus/issues/202
public void testCustomEventSerializes() {
assertThat(this.converter.isMapperCreated()).isFalse();

View File

@@ -43,6 +43,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.filter.AssignableTypeFilter;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.converter.AbstractMessageConverter;
import org.springframework.util.ClassUtils;
@@ -86,12 +87,7 @@ class BusJacksonMessageConverter extends AbstractMessageConverter
private String[] packagesToScan = new String[] { DEFAULT_PACKAGE };
BusJacksonMessageConverter() {
this(null);
}
@Autowired(required = false)
BusJacksonMessageConverter(ObjectMapper objectMapper) {
BusJacksonMessageConverter(@Nullable ObjectMapper objectMapper) {
super(MimeTypeUtils.APPLICATION_JSON);
if (objectMapper != null) {

View File

@@ -80,7 +80,7 @@ public class SubtypeModuleTests {
@Test
public void testDeserializeWithMessageConverter() throws Exception {
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
converter.afterPropertiesSet();
Object event = converter.fromMessage(MessageBuilder
.withPayload("{\"type\":\"TestRemoteApplicationEvent\"}").build(),
@@ -91,7 +91,7 @@ public class SubtypeModuleTests {
@Test
public void testDeserializeUnknownTypeWithMessageConverter() throws Exception {
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
converter.afterPropertiesSet();
Object event = converter.fromMessage(MessageBuilder
.withPayload("{\"type\":\"NotDefinedTestRemoteApplicationEvent\"}")
@@ -108,7 +108,7 @@ public class SubtypeModuleTests {
@Test
public void testDeserializeJsonTypeWithMessageConverter() throws Exception {
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
converter.afterPropertiesSet();
Object event = converter.fromMessage(
MessageBuilder.withPayload("{\"type\":\"typed\"}").build(),
@@ -122,7 +122,7 @@ public class SubtypeModuleTests {
*/
@Test
public void testDeserializeAckRemoteApplicationEventWithKnownType() throws Exception {
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
converter.afterPropertiesSet();
Object event = converter.fromMessage(MessageBuilder
.withPayload("{\"type\":\"AckRemoteApplicationEvent\", "
@@ -141,7 +141,7 @@ public class SubtypeModuleTests {
@Test
public void testDeserializeAckRemoteApplicationEventWithUnknownType()
throws Exception {
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
converter.afterPropertiesSet();
Object event = converter.fromMessage(MessageBuilder.withPayload(
"{\"type\":\"AckRemoteApplicationEvent\", \"event\":\"foo.bar.TestRemoteApplicationEvent\"}")