From 2b97e82fe2d0d62e77dab6739162cb82cb06bb23 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 31 Jul 2019 11:18:25 -0400 Subject: [PATCH] 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 is injected somewhere. fixes gh-202 --- .../cloud/bus/jackson/BusJacksonIntegrationTests.java | 2 -- .../cloud/bus/jackson/BusJacksonAutoConfiguration.java | 8 ++------ .../cloud/bus/jackson/SubtypeModuleTests.java | 10 +++++----- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/spring-cloud-bus-tests/src/test/java/org/springframework/cloud/bus/jackson/BusJacksonIntegrationTests.java b/spring-cloud-bus-tests/src/test/java/org/springframework/cloud/bus/jackson/BusJacksonIntegrationTests.java index b5350a2..c827517 100644 --- a/spring-cloud-bus-tests/src/test/java/org/springframework/cloud/bus/jackson/BusJacksonIntegrationTests.java +++ b/spring-cloud-bus-tests/src/test/java/org/springframework/cloud/bus/jackson/BusJacksonIntegrationTests.java @@ -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(); diff --git a/spring-cloud-bus/src/main/java/org/springframework/cloud/bus/jackson/BusJacksonAutoConfiguration.java b/spring-cloud-bus/src/main/java/org/springframework/cloud/bus/jackson/BusJacksonAutoConfiguration.java index dc7b029..f672125 100644 --- a/spring-cloud-bus/src/main/java/org/springframework/cloud/bus/jackson/BusJacksonAutoConfiguration.java +++ b/spring-cloud-bus/src/main/java/org/springframework/cloud/bus/jackson/BusJacksonAutoConfiguration.java @@ -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) { diff --git a/spring-cloud-bus/src/test/java/org/springframework/cloud/bus/jackson/SubtypeModuleTests.java b/spring-cloud-bus/src/test/java/org/springframework/cloud/bus/jackson/SubtypeModuleTests.java index 925014b..e52e96c 100644 --- a/spring-cloud-bus/src/test/java/org/springframework/cloud/bus/jackson/SubtypeModuleTests.java +++ b/spring-cloud-bus/src/test/java/org/springframework/cloud/bus/jackson/SubtypeModuleTests.java @@ -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\"}")